Speech recognition using selectable recognition modes

ABSTRACT

The present invention relates to speech recognition using selectable recognition modes. This includes innovations such as: large vocabulary speech recognition programming that supplies recognized words to external program as they are recognized, and allows a user to select between large vocabulary recognition of an utterance with and without language context from the prior utterance independently of state of the external program; allowing a user to select between continuous and discrete speech recognition that use substantially the same vocabulary; allowing a user to select between continuous and discrete large-vocabulary speech recognition modes; allowing a user to select between at least two different alphabetic entry speech recognition modes; and allowing a user to select from among four or more of the following recognitions modes when creating text: a large-vocabulary mode, an alphabetic entry mode, a number entry mode, and a punctuation entry mode.

RELATED APPLICATIONS

This application is a continuation-in-part of, and claims the priorityof, a parent application, i.e., U.S. patent application Ser. No.10/227,653, entitled “Methods, Systems, and Programming For PerformingSpeech Recognition”, filed on Sep. 6, 2002 by Daniel L. Roth et al. Thisparent application is a continuation-in-part of, and claims the priorityof, a grandparent application, U.S. patent application Ser. No.10/302,053, which has the same title as the parent application (i.e.,“Methods, Systems, and Programming For Performing Speech Recognition”)and was filed one day before the parent application (i.e., on Sep. 5,2002), by Daniel L. Roth et al. The grandparent application claims thepriority of the following United States provisional applications, all ofwhich were filed on Sep. 5, 2001, and all of which were referenced inpriority claims contained in the parent and grandparent applications aswell as this current application:

-   -   U.S. Provisional Patent App. No. 60/317,333, entitled “Systems,        Methods, and Programming for Speech Recognition Using Selectable        Recognition Modes” by Daniel L. Roth et al.    -   U.S. Provisional Patent App. No. 60/317,433, entitled “Systems,        Methods, and Programming for Speech Recognition Using Automatic        Recognition Turn Off” by Daniel L. Roth et al.    -   U.S. Provisional Patent App. No. 60/317,431, entitled “Systems,        Methods, and Programming for Speech Recognition Using Ambiguous        Or Phone Key Spelling And/Or Filtering” by Daniel L. Roth et al.    -   U.S. Provisional Patent App. No. 60/317,329, entitled “Systems,        Methods, and Programming For Phone Key Control Of Speech        Recognition” by Daniel L. Roth et al.    -   U.S. Provisional Patent App. No. 60/317,330, entitled “Systems,        Methods, and Programming for Word Recognition Using Choice        Lists” by Daniel L. Roth et al.    -   U.S. Provisional Patent App. No. 60/317,331, entitled “Systems,        Methods, and Programming For Word Recognition Using Word        Transformation Commands” by Daniel L. Roth et al.    -   U.S. Provisional Patent App. No. 60/317,423, entitled “Systems,        Methods, and Programming For Word Recognition Using Filtering        Commands” by Daniel L. Roth et al.    -   U.S. Provisional Patent App. No. 60/317,422, entitled “Systems,        Methods, and Programming For Speech Recognition Using Phonetic        Models” by Daniel L. Roth et al.    -   U.S. Provisional Patent App. No. 60/317,421, entitled “Systems,        Methods, and Programming For Large Vocabulary Speech Recognition        In Handheld Computing Devices” by Daniel L. Roth et al.    -   U.S. Provisional Patent App. No. 60/317,430, entitled “Systems,        Methods, and Programming For Combined Speech And Handwriting        Recognition” by Daniel L. Roth et al.    -   U.S. Provisional Patent App. No. 60/317,432, entitled “Systems,        Methods, and Programming For Performing Re-Utterance        Recognition” by Daniel L. Roth et al.    -   U.S. Provisional Patent App. No. 60/317,435, entitled “Systems,        Methods, and Programming For Combined Speech Recognition And        Text-To-Speech Generation” by Daniel L. Roth et al.    -   U.S. Provisional Patent App. No. 60/317,434 entitled “Systems,        Methods, and Programming For Sound Recording” by Daniel L. Roth        et al.

FIELD OF THE INVENTION

The present invention relates to methods, systems, and programming forperforming speech recognition.

BACKGROUND OF THE INVENTION

Discrete large-vocabulary speech recognition systems have been availablefor use on desktop personal computers for approximately twelve years bythe time of the writing of this patent application. Discrete speechrecognition can only recognize a single set of one or more recognitioncandidates, each consisting of one vocabulary word, per utterance, wherea vocabulary word, for example, can correspond to a single word, aletter name, or even a multiword phrase the system treats as one word.Continuous speech recognition, on the other hand, can produce a sequenceof sets of one or more recognition candidates, each consisting of one ormore vocabulary words in response to a single utterance. Continuouslarge-vocabulary speech recognition systems have been available for useon such computers for approximately seven years by this time. Suchspeech recognition systems have proven to be of considerable worth. Infact, much of the text of the present patent application has beenprepared by the use of a large-vocabulary continuous speech recognitionsystem.

As used in this specification and the claims that follow, when we referto a large-vocabulary speech recognition system, we mean one that hasthe ability to recognize a given utterance as being any one of at leasttwo thousand different vocabulary words at one time, with therecognition depending upon which of those words has correspondingphonetic or acoustic models that most closely match the given spokenword.

As indicated by FIG. 1, large-vocabulary speech recognition typicallyfunctions by having a user 100 speak into a microphone 102, which in theexample of FIG. 1 is a microphone of a cellular telephone 104. Themicrophone transduces the variation in air pressure over time caused bythe utterance of one or more words into a corresponding waveformrepresented by an electronic signal 106. In many speech recognitionsystems this waveform signal is converted, by digital signal processingperformed either by a computer processor or by a special digital signalprocessor 108, into a time domain representation. Often the time domainrepresentation comprises a plurality of parameter frames 112, each ofwhich represents properties of the sound represented by the waveform 106at each of a plurality of successive time periods, such as everyone-hundredth of a second.

As indicated in FIG. 2, the time domain, or frame, representation of anutterance to be recognized is then matched against a plurality ofpossible sequences of phonetic models 200 corresponding to differentwords in a large vocabulary. In most large-vocabulary speech recognitionsystems, individual words 202 are each represented by a correspondingphonetic spelling 204, similar to the phonetic spellings found in mostdictionaries. Each phoneme in a phonetic spelling has one or morephonetic models 200 associated with it. In many systems the models 200are phoneme-in-context models, which model the sound of their associatedphoneme when it occurs in the context of the preceding and followingphoneme in a given word's phonetic spelling. The phonetic models arecommonly composed of the sequence of one or more probability models,each of which represents the probability of different parameter valuesfor each of the parameters used in the frames of the time domainrepresentation 110 of an utterance to be recognized.

One of the major trends in personal computing in recent years has beenthe increased use of smaller and often more portable computing devices.

Originally most personal computing was performed upon desktop computersof the general type represented by FIG. 3. Then there was an increase inusage of even smaller personal computers in the form of laptopcomputers, which are not shown in the drawings because laptop computershave roughly the same type of computational capabilities and userinterface as desktop computers. Most current large-vocabulary speechrecognition systems have been designed for use on such systems.

Recently there has been an increase in the use of new types of computerssuch as the tablet computer shown in FIG. 4, the personal digitalassistant computer shown in FIG. 5, cell phones which have increasedcomputing power, shown in FIG. 6, wrist phone computers represented inFIG. 7, and a wearable computer which provides a user interface with ascreen and eye tracking and/or audio output provided from a headwearable device as indicated in FIG. 8.

Because of recent increases in computing power, such new types ofdevices can have computational power equal to that of the first desktopson which discrete large-vocabulary recognition systems were providedand, in some cases, as much computational power as was provided ondesktop computers that first ran large vocabulary continuous speechrecognition. The computational capacities of such smaller and/or moreportable personal computers will only grow as time goes by.

One of the more important challenges involved in providing effectivelarge-vocabulary speech recognition on ever more portable computers isthat of providing a user interface that makes it easier and faster tocreate, edit, and use speech recognition on such devices.

SUMMARY OF THE INVENTION

The present invention relates to speech recognition using selectablerecognition modes. This includes innovations such as: large vocabularyspeech recognition programming that supplies recognized words toexternal program as they are recognized, and allows a user to selectbetween large vocabulary recognition of an utterance with and withoutlanguage context from the prior utterance independently of the state ofthe external program; allowing a user to select between continuous anddiscrete speech recognition that use substantially the same vocabulary;allowing a user to select between continuous and discretelarge-vocabulary speech recognition modes; allowing a user to selectbetween at least two different alphabetic-entry speech recognitionmodes; and allowing a user to select from among four or more of thefollowing recognitions modes when creating text: large-vocabulary,alphabetic-entry, number-entry, and punctuation-entry modes.

BRIEF DESCRIPTION OF THE DRAWINGS

These and other aspects of the present invention will become moreevident upon reading the following description of the preferredembodiment in conjunction with the accompanying drawings:

FIG. 1 is a schematic illustration of how spoken sound can be convertedinto acoustic parameter frames for use by speech recognition software.

FIG. 2 a schematic illustration of how speech recognition, usingphonetic spellings, can be used to recognize words represented by asequence of parameter frames such as those shown in FIG. 1, and how thetime alignment between phonetic models of the word can be used to timealign those words against the original acoustic signal from which theparameter frames have been derived.

FIGS. 3 through 8 show a progression of different types of computingplatforms upon which many aspects of the present invention can be used,illustrating the trend toward smaller and/or more portable computingdevices.

FIG. 9 illustrates a personal digital assistant, or PDA, device having atouch screen displaying a software input panel, or SIP, embodying manyaspects of the present invention, that allows entry by speechrecognition of text into application programs running on such a device.

FIG. 10 is a highly schematic illustration of many of the hardware andsoftware components that can be found in a PDA of the type shown in FIG.9.

FIG. 11 is a blowup of the screen image shown in FIG. 9, used to pointout many of the specific elements of the speech recognition SIP shown inFIG. 9.

FIG. 12 is similar to FIG. 11 except that it also illustrates acorrection window produced by the speech recognition SIP and many of itsgraphical user interface elements.

FIGS. 13 through 17 provide a highly simplified pseudocode descriptionof the responses that the speech recognition SIP makes to variousinputs, particularly inputs received from its graphical user interface.

FIG. 18 is a highly simplified pseudocode description of the recognitionduration logic used to determine the length of time for which speechrecognition is turned on in response to the pressing of one or more userinterface buttons, either in the speech recognition SIP shown in FIG. 9or in the cellphone embodiment shown starting at FIG. 59.

FIG. 19 is a highly simplified pseudocode description of a help modethat enables a user to see a description of the functions associatedwith each element of the speech recognition SIP of FIG. 9 merely bytouching it.

FIGS. 20 and 21 are screen images produced by the help mode described inFIG. 19.

FIG. 22 is a highly simplified pseudocode description of adisplayChoiceList routine used in various forms by both the speechrecognition SIP of FIG. 9 and the cellphone embodiment of FIG. 59 todisplay correction windows.

FIG. 23 is a highly simplified pseudocode description of the getchoicesroutine used in various forms by both the speech recognition SIP and thecellphone embodiment to generate one or more choice list for use by thedisplayChoiceList routine of FIG. 22.

FIGS. 24 and 25 illustrate the utterance list data structure used by thegetchoices routine of FIG. 23.

FIG. 26 is a highly simplified pseudocode description of a filter Matchroutine used by the getchoices routine to limit correction windowchoices to match filtering input, if any, entered by a user.

FIG. 27 is a highly simplified pseudocode description of a word FormList routine used in various forms by both the speech recognition SIPand the cellphone embodiment to generate a word form correction listthat displays alternate forms of a given word or selection.

FIGS. 28 and 29 provided a highly simplified pseudocode description of afilterEdit routine used in various forms by both the speech recognitionSIP and cellphone embodiment to edit a filter string used by the filterMatch routine of FIG. 26 in response to alphabetic filtering informationinput from a user.

FIG. 30 provides a highly simplified pseudocode description of afiltercharacterchoice routine used in various forms by both the speechrecognition SIP and cellphone embodiment to display choice lists forindividual characters of a filter string.

FIGS. 31 through 35 illustrate a sequence of interactions between a userand the speech recognition SIP, in which the user enters and correctsthe recognition of words using a one-at-a-time discrete speechrecognition method.

FIG. 36 shows how a user of the SIP can correct a mis-recognition shownat the end of FIG. 35 by a scrolling through the choice list provided inthe correction window until finding a desired word and then using acapitalized button to capitalize it before entering it into text.

FIG. 37 shows how a user of the SIP can correct such a mis-recognitionby selecting part of an alternate choice in the correction window andusing it as a filter for selecting the desired speech recognitionoutput.

FIG. 38 shows how a user of the SIP can select two successivealphabetically ordered alternate choices in the correction window tocause the speech recognizer's output to be limited to output startingwith a sequence of characters alphabetically located between the twoselected choices.

FIG. 39 illustrates how a user of the SIP can use the speech recognitionof letter names (i.e., of “a”, “b”, “c”, etc.) to input filteringcharacters and how a filter character choice list can be used to correcterrors in the recognition of such filtering characters.

FIG. 40 illustrates how a user of the SIP recognizer can enter one ormore characters of a filter string using the international communicationalphabets and how the SIP interface can show the user the words out ofthat alphabet.

FIG. 41 shows how a user can select an initial sequence of charactersfrom an alternate choice in the correction window and then useinternational communication alphabets to add characters to that sequenceso as to complete the spelling of a desired output.

FIGS. 42 through 44 illustrate a sequence of user interactions in whichthe user enters and edits text into the SIP using continuous speechrecognition.

FIG. 45 illustrates how the user can correct a mis-recognition byspelling all or part of the desired output using continuous letter namerecognition as an ambiguous (or multivalued) filter, and how the usercan use filter character choice lists to rapidly correct errors producedin such continuous letter name recognition.

FIG. 46 illustrates how the speech recognition SIP also enables a userto input characters by handwritten character recognition.

FIG. 47 is a highly simplified pseudocode description of a characterrecognition mode used by the SIP when performing handwritten characterrecognition of the type shown in FIG. 46.

FIG. 48 illustrates how the speech recognition SIP lets a user inputtext using another type of handwriting recognition.

FIG. 49 is a highly simplified pseudocode description of the handwritingrecognition mode used by the SIP when performing handwriting recognitionof the type shown in FIG. 48.

FIG. 50 illustrates how the speech recognition system enables a user toinput text with a software keyboard.

FIG. 51 illustrates a filter entry mode menu that can be selected tochoose from different methods of entering filtering information,including speech recognition, character recognition, handwritingrecognition, and software keyboard input.

FIGS. 52 through 54 illustrates how either character recognition,handwriting recognition, or software keyboard input can be used tofilter speech recognition choices produced by in the SIP's correctionwindow.

FIGS. 55 and 56 illustrate how the SIP allows speech recognition ofwords or filtering characters to be used to correct handwritingrecognition input.

FIG. 57 illustrates an alternate embodiment of the SIP in which thereare two separate top-level buttons to select between discrete andcontinuous speech recognition.

FIG. 58 is a highly simplified description of an alternate embodiment ofthe displayChoiceList routine of FIG. 22 in which the choice listproduced orders choices only by recognition score, rather than byalphabetical ordering as in FIG. 22.

FIG. 59 illustrates a cellphone that embodies many aspects of thepresent invention.

FIG. 60 provides a highly simplified block diagram of the majorcomponents of a typical cellphone such as that shown in FIG. 59.

FIG. 61 is a highly simplified block diagram of various programming anddata structures contained in one or more mass storage devices on thecellphone of FIG. 59.

FIG. 62 illustrates that the cellphone of FIG. 59 allows traditionalphone dialing by the pressing of numbered phone keys.

FIG. 63 is a highly simplified pseudocode description of the commandstructure of the cellphone of FIG. 59 when in its top level phone mode,as illustrated by the screen shown in the top of FIG. 62.

FIG. 64 illustrates how a user of the cellphone of FIG. 59 can accessand quickly view the commands of a main menu by pressing the menu key onthe cellphone.

FIGS. 65 and 66 provide a highly simplified pseudocode description ofthe operation of the main menu illustrated in FIG. 64.

FIGS. 67 through 74 illustrate command mappings of the cellphone'snumbered keys in each of various important modes and menus associatedwith a speech recognition text editor that operates on the cellphone ofFIG. 59.

FIG. 75 illustrates how user of the cellphone's text editing softwarecan rapidly see the function associated with one or more keys in anon-menu mode by pressing the menu button and scrolling through acommand list that can be used substantially in the same manner as a menuof the type shown in FIG. 64.

FIGS. 76 through 78 provide a highly simplified pseudocode descriptionof the responses of the cellphone's speech recognition program when inits text window editor mode.

FIGS. 79 and 80 provide a highly simplified pseudocode description of anentry mode menu, which can be accessed from various speech recognitionmodes to select among various ways to enter text.

FIGS. 81 through 83 provide a highly simplified pseudocode descriptionof the correction Window routine used by the cellphone to display acorrection window and to respond to user input when such correctionwindow is shown.

FIG. 84 is a highly simplified pseudocode description of an editnavigation menu that allows a user to select various ways of navigatingwith the cellphone's navigation keys when the edit mode's text window isdisplayed.

FIG. 85 is a highly simplified pseudocode description of a correctionwindow navigation menu that allows the user to select various ways ofnavigating with the cellphone's navigation keys when in a correctionwindow, and also to select from among different ways the correctionwindow can respond to the selection of an alternate choice in acorrection window.

FIGS. 86 through 88 provide highly simplified pseudocode descriptions ofthree slightly different embodiments of the key Alpha mode, whichenables a user to enter a letter by saying a word starting with thatletter and which responds to the pressing of a phone key bysubstantially limiting such recognition to words starting with one ofthe three or four letters associated with the pressed key.

FIGS. 89 and 90 provide a highly simplified pseudocode description ofsome of the options available under the edits options menu that isaccessible from many of the modes of the cellphone's speech recognitionprogramming.

FIGS. 91 and 92 provide a highly simplified description of a word typemenu that can be used to limit recognition choices to a particular typeof word, such as a particular grammatical type of word.

FIG. 93 provides a highly simplified pseudocode description of an entrypreference menu that can be used to set default recognition settings forvarious speech recognition functions, or to set recognition durationsettings.

FIG. 94 provides a highly simplified pseudocode description oftext-to-speech playback operation available on the cellphone.

FIG. 95 provides a highly simplified pseudocode description of how thecellphone's text to speech generation uses programming and datastructures also used by the cellphone's speech recognition.

FIG. 96 is a highly simplified pseudocode description of the cellphone'stranscription mode that makes it easier for a user to transcribe audiorecorded on the cellphone using the device's speech recognitioncapabilities.

FIG. 97 is a highly simplified pseudocode description of programmingthat enables the cellphone's speech recognition editor to be used toenter and edit text in dialogue boxes presented on the cellphone, aswell as to change the state of controls such as list boxes, check boxes,and radio buttons in such dialog boxes.

FIG. 98 is a highly simplified pseudocode description of a help routineavailable on the cellphone to enable a user to rapidly find descriptionsof various locations in the cellphone's command structure.

FIGS. 99 and 100 illustrate examples of help menus of the type that aredisplayed by the programming of FIG. 98.

FIGS. 101 and 102 illustrate how a user can use the help programming ofFIG. 98 to rapidly search for, and receive descriptions of, thefunctions associated with various portions of the cellphone's commandstructure.

FIGS. 103 and 104 illustrate a sequence of interactions between a userand the cellphone's speech recognition editor's user interface in whichthe user enters and corrects text using continuous speech recognition.

FIG. 105 illustrates how a user can scroll horizontally in a correctionwindow displayed on the cellphone.

FIG. 106 illustrates how the KeyAlpha recognition mode can be used toenter alphabetic input into the cellphone's text editor window.

FIG. 107 illustrates operation of the key Alpha mode shown in FIG. 86.

FIGS. 108 and 109 illustrate how the cellphone's speech recognitioneditor allows the user to address and enter and edit text in an e-mailmessage that can be sent by the cellphone's wireless communicationcapabilities.

FIG. 110 illustrates how the cellphone's speech recognition can combinescores from the discrete recognition of one or more words with scoresfrom a prior continuous recognition of those words to help produce thedesired output.

FIG. 111 illustrates how the cellphone speech recognition software canbe used to enter a URL for the purposes of accessing a World Wide Website using the wireless communication capabilities of the cellphone.

FIGS. 112 and 113 illustrate how elements of the cellphone's speechrecognition user interface can be used to navigate World Wide Web pagesand to select items and enter and edit text in the fields of such webpages.

FIG. 114 illustrates how elements of the cellphone speech recognitionuser interface can be used to enable a user to more easily read textstrings too large to be seen at one time in a text field displayed onthe cellphone screens, such as a text fields of a web page or dialoguebox.

FIG. 115 illustrates the cellphone's find dialog box, how a user canenter a search string into that dialog box by speech recognition, howthe find function then performs a search for the entered string, and howthe found text can be used to label audio recorded on the cellphone.

FIG. 116 illustrates how the dialog box editor programming shown in FIG.97 enable speech recognition to be used to select from among possiblevalues associated with a list boxes.

FIG. 117 illustrates how speech recognition can be used to dial peopleby name, and how the audio playback and recording capabilities of thecellphone can be used during such a cellphone call.

FIG. 118 illustrates how speech recognition can be turned on and offwhen the cellphone is recording audio to insert text labels or textcomments into recorded audio.

FIG. 119 illustrates how the cellphone enables a user to have speechrecognition performed on portions of previously recorded audio.

FIG. 120 illustrates how the cellphone enables a user to strip textrecognized for a given segment of sound from the audio recording of thatsound.

FIG. 121 illustrates how the cellphone enables the user to either turnon or off an indication of which portions of a selected segment of texthave associated audio recording.

FIGS. 122 through 125 illustrate how the cellphone speech recognitionsoftware allows the user to enter telephone numbers by speechrecognition and to correct the recognition of such numbers when wrong.

FIG. 126 illustrates how many aspects of the cellphone embodiment shownin FIG. 59 through 125 can be used in an automotive environment,including the TTS and duration logic aspects of the cellphoneembodiment.

FIGS. 127 and 128 illustrate that most of the aspects of the cellphoneembodiment shown in FIG. 59 through 125 can be used either on cordlessphones or landline phones.

FIG. 129 provides a highly simplified pseudocode description of the namedialing programming of the cellphone embodiment, which is partiallyillustrated in FIG. 117.

FIG. 130 provides a highly simplified pseudocode description of thecellphone's digit dial programming illustrated in FIGS. 122 through 125.

DETAILED DESCRIPTION OF SOME PREFERRED EMBODIMENTS

FIG. 9 illustrates the personal digital assistant, or PDA, 900 on whichmany aspects of the present invention can be used. The PDA shown issimilar to the Compaq iPAQ H3650 Pocket PC, the Casio Cassiopeia, andthe Hewlett-Packard Jornado 525.

The PDA 900 includes a relatively high resolution touch screen 902,which enables the user to select software buttons as well as portions oftext by means of touching the touch screen, such as with a stylus 904 ora finger. The PDA also includes a set of input buttons 906 and atwo-dimensional navigational control 908.

In this specification and the claims that follow, a navigational inputdevice that allows a user to select discrete units of motion on one ormore dimensions will normally be considered to be included in thedefinition of a “button”. This is particularly true with regard totelephone interfaces, in which the Up, Down, Left, and Right inputs of anavigational device will be considered “phone keys” or “phone buttons”.

FIG. 10 provides a schematic system diagram of a PDA 900. It shows thetouch screen 902 and input buttons 906 (which include the navigationalinput 908). It also shows that the device has a central processing unitsuch as a microprocessor 1002. The CPU 1002 is connected over one ormore electronic communication buses 1004 with read-only memory 1006(often flash ROM); random access memory 1008; one or more I/O devices1010; a video controller 1012 for controlling displays on the touchscreen 902; and an audio device 1014 for receiving input from amicrophone 1015 and supplying audio output to a speaker 1016.

The PDA also includes a battery 1018 for providing it with portablepower; a headphone-in and headphone-out jack 1020, which is connected tothe audio circuitry 1014; a docking connector 1022 for providing aconnection between the PDA and another computer, such as a desktop; andan add-on connector 1024 for enabling a user to add circuitry to the PDAsuch as additional flash ROM, a modem, a wireless transceiver 1025, or amass storage device.

FIG. 10 shows a mass storage device 1017. In actuality, this massstorage device could be any type of mass storage device, including allor part of the flash ROM 1006 or a miniature hard disk. In such a massstorage device the PDA would normally store an operating system 1026 forproviding much of the basic functionality of the device. Commonly itwould include one or more application programs, such as a wordprocessor, a spreadsheet, a Web browser, or a personal informationmanagement system, in addition to the operating system and in additionto the speech recognition related functionality explained next.

When the PDA 900 is used with the present invention, it will normallyinclude speech recognition programming 1030. It includes programming forperforming word matching of the general type described above with regardto FIGS. 1 and 2. The speech recognition programming will also normallyinclude one or more vocabularies or vocabulary groupings 1032 includinga large vocabulary that includes at least two thousand words. Many largevocabulary systems have a vocabulary of fifty thousand to severalhundred thousand words. For each vocabulary word, the vocabulary willnormally have a text spelling 1034 and one or more vocabulary groupings1036 to which the word belongs (for example, the text output “.” mightactually be in both a large-vocabulary recognition vocabulary, aspelling vocabulary, and a punctuation vocabulary grouping in somesystems). Each vocabulary word will also normally have an indication ofthe one or more parts of speech 1038 in which the word can beclassified, and the phonetic spelling 1040 for the word for each ofthose parts of speech.

The speech recognition programming commonly includes a pronunciationguesser 1042 for guessing the pronunciation of new words that are addedto the system and, thus, which do not have a predefined phoneticspelling. The speech recognition programming commonly includes one ormore phonetic lexical trees 1044. A phonetic lexical tree is atree-shaped data structure that groups together in a common path fromthe tree's root all phonetic spellings that start with the same sequenceof phonemes. Using such lexical trees improves recognition performancebecause it enables all portions of different words that share the sameinitial phonetic spelling to be scored together.

Preferably the speech recognition programming will also include apolygram language model 1045 that indicates the probability of theoccurrence of different words in text, including the probability ofwords occurring in text given one or more preceding and/or followingwords.

Commonly the speech recognition programming will store language modelupdate data 1046, which includes information that can be used to updatethe polygram language model 1045 just described. Commonly this languagemodel update data will either include or contain statistical informationderived from text that the user has created or that the user hasindicated is similar to the text that he or she wishes to generate. InFIG. 10 the speech recognition programming is shown storing contactinformation 1048, which includes names, addresses, phone numbers, e-mailaddresses, and phonetic spellings for some or all of such information.This data is used to help the speech recognition programming recognizethe speaking of such contact information. In many embodiments suchcontact information will be included in an external program, such as oneof the application programs 1028 or accessories to the operating system1026, but, even in such cases, the speech recognition programming wouldnormally need access to such names, addresses, phone numbers, e-mailaddresses, and phonetic representations for them.

The speech recognition programming will also normally include phoneticacoustic models 1050 which can be similar to the phonetic models 200shown in FIG. 2. Commonly the speech recognition programming also storesacoustic model update data 1052, which includes information fromacoustic signals that have been previously recognized by the system.Commonly such acoustic model update data will be in the form ofparameter frames, such as the parameter frames 110 shown in FIGS. 1 and2, or in the form of statistical data that has been abstracted from suchframes.

FIG. 11 provides a close-up view of the user interface provided by thetouch screen 902 shown in FIG. 9, with the PDA using a software inputpanel (or SIP) 1100 embodying many aspects of the present invention.

FIG. 12 is similar to FIG. 11 except it shows the touch screen 902 whenthe speech recognition SIP is displaying a correction window 1200.

FIGS. 13 through 17 are successive pages of a pseudocode description ofhow the speech recognition SIP responds to various inputs on itsgraphical user interface. For purposes of simplicity this pseudocode isrepresented as one main event loop 1300 in the SIP program whichresponds to user input.

In FIGS. 13 through 17 this event loop is described as having two majorswitch statements: a switch statement 1301 in FIG. 13 that responds toinputs on the user interface that can be generated whether or not thecorrection window 1200 is displayed, and a switch statement 1542 in FIG.15 that responds to user inputs that can only be generated when thecorrection window 1200 is displayed.

If the user presses the Talk button 1102 shown in FIG. 11, function 1302of FIG. 13 causes functions 1304 through 1308 to be performed. Function1304 tests to see if there is any text in the SIP buffer shown by thewindow 1104 in FIG. 11. In the SIP embodiment shown in the figures, theSIP buffer is designed to hold a relatively small number of lines oftext, for which the SIP's software will keep track of the acoustic inputand best choices associated with the recognition of each word, and thelinguistic context created by such text. Such a text buffer is usedbecause the speech recognition SIP often will not have knowledge aboutthe text in the remote application shown in the window 1106 in FIG. 11into which the SIP outputs text at the location of the remoteapplication's current cursor 1108. In other embodiments of the inventiona much larger SIP buffer could be used. In other embodiments many of theaspects of the present invention will be used as part of an independentspeech recognition text creation application that will not require theuse of a SIP for the inputting of text. The major advantage of using aspeech recognizer that functions as a SIP is that it can be used toprovide input for almost any application designed to run on a PDA.

Returning to FIG. 13, function 1304 clears any text from the SIP buffer1104 because the Talk button 1102 is provided as a way for a user toindicate to the SIP that he or she is dictating text in a new context.Thus, if the user of the SIP has moved the cursor 1108 in theapplication window 1106 of FIG. 11, he should start the next dictationby pressing the Talk button 1102.

When function 1304 clears text from the SIP buffer no deletion are sentto the OS text inputs. This is because such clearing of the SIP bufferdoes not indicate a desire to delete any text in the SIP buffer that mayhave been sent to the OS text input by the SIP, but rather only a desireto start new dictation.

Function 1305 sets a variable or a structure named priorSipBufferLangContext to null. This structure indicates the priorlanguage context, if any, which is to be used for recognition at thestart of the SIP buffer. By pressing the Talk button, the user hasselected that no prior language context be used at the start of the SIPbuffer.

Function 1306 in FIG. 13 responds to the pressing of the Talk buttonremoving any correction window, such as the correction window 1200 shownin FIG. 12, that may be currently displayed. If the SIP was in thecorrection mode at the time the removed correction window was displayed,correction mode is also exited.

The SIP shown in the figures has two modes in which it can display acorrection window. In the first, used in a one-at-a-time mode before auser has explicitly selected to use the correction window, the SIP isnot in correction mode when a correction window is displayed, and thecorrection window is not selected to receive inputs from most buttons ofthe main SIP interface. In the second mode, used other than in thecircumstances just described, the SIP is in correction mode when thecorrection window is displayed and it is selected to receive inputs frommany of the SIP buttons.

This distinction is desirable because the particular SIP shown can beselected to operate in the above mentioned one-at-a-time mode in whichwords are spoken and recognized discreetly, and in which a correctionwindow is displayed for each word as it is recognized to enable a userto more quickly see the choice list or provide correction input. Inone-at-a-time mode most forms of user input not specifically related tomaking corrections are used to affect or effect the input of subsequenttext, as well as to perform the additional function of confirming thefirst choice displayed in the current choice list as the desired word.In one at a time mode the user can explicitly select to use thecorrection window, in which case correction mode is entered. When thesystem is not in one-at-a-time mode, the correction window is usuallydisplayed only when the user has provided input indicating a desire tocorrect previous input. In such cases the correction window is openedwith the SIP in correction mode, because it is assumed that, since theuser has chosen to make a correction, most forms of input should bedirected to the correction window.

It should be appreciated that in systems that only use one-at-a-timerecognition, or those that do not use it at all, there would be no needto have the added complication of being able to display correctionwindows either with or without being in correction mode.

Returning to function 1306, it removes any current correction windowbecause the pressing of the Talk button 1302 indicates a desire to startnew dictation, rather than an interest in correcting old dictation.

Function 1308 of FIG. 13 responds to the pressing of the Talk button bycausing SIP buffer recognition to start according to a previouslyselected current recognition duration mode. Because function 1305 hasnulled the prior SipBufferLangContex this recognition takes placewithout any prior language context for the first word in the SIP buffer.Preferably language model context will be derived from words recognizedin response to one pressing of the Talk button and used to provide alanguage context for the recognition of the second and subsequent wordsin such recognition.

FIG. 18 is a schematic representation of the recognition durationprogramming 1800 that enables a user to select different modes ofactivating speech recognition in response to the pressing or clicking ofany button in the SIP interface that can be used to start speechrecognition. In the shown embodiment there are a plurality of buttons,including the Talk button, each of which can be used to start speechrecognition. This enables a user to both select a given mode ofrecognition and to start recognition in that mode with a single pressingof a button.

Function 1802 helps determine which functions of FIG. 18 are performed,depending on the current recognition duration mode. The mode can havebeen set in multiple different ways, including by default and byselection under the Entry Preference option in the function menu shownin FIG. 46.

If the PressOnly recognition duration type has been selected, function1804 will cause functions 1806 and 1808 to recognize speech sounds thatare uttered during the pressing of a speech button. This recognitionduration type is both simple and flexible because it enables a user tocontrol the length of recognition by one simple rule: recognition occursduring and only during the pressing of a speech button. Preferablyutterance and/or end of utterance detection is used during anyrecognition mode, to decrease the likelihood that background noises willbe recognized as utterances.

If the current recognition duration type is thePress-AndClickToUtteranceEnd type, function 1810 will cause functions1812 and 1814 to respond to the pressing of a speech button byrecognizing speech during that press. In this case the “pressing” of aspeech button is defined as the pushing of such a button for longer thana given duration, such as, for example, longer than one-quarter orone-third of a second. If the user pushes on a speech button for ashorter period of time, that push will be treated as a “click” ratherthan as a “press,” and functions 1816 and 1818 will initiate recognitionstarting from the time of that click until the next end of utterancedetection.

The PressAndClickToUtteranceEnd recognition duration type has thebenefit of enabling the use of one button to rapidly and easily selectbetween a mode that allows a user to select a variable length extendedrecognition, and a mode that recognizes only a single utterance.

If the current recognition duration type is thePressContinuous,ClickDiscreteToUtterances End type, function 1820 causesfunctions 1822 through 1828 to be performed. If the speech button isclicked, as just defined, functions 1822 and 1824 perform discreterecognition until the next end of utterance. If, on the other hand, thespeech button is pressed, as previously defined, functions 1826 and 1828perform continuous recognition as long as the speech button remainspressed.

This recognition duration type has the benefit of making it easy forusers to quickly switch between continuous and discrete recognitionmerely by using different types of presses on a given speech button. Inthe SIP embodiment shown, the other recognition duration types do notswitch between continuous and discrete recognition.

If the current recognition duration type is the ClickToTimeout type,function 1830 causes functions 1832 to 1840 to be performed. If thespeech button is clicked, functions 1833 through 1836 normally togglerecognition between off and on. Function 1834 responds to a click bytesting to see whether or not speech recognition is currently on. If so,and if the speech button being clicked is other than one that changesvocabulary, it responds to the click by turning off speech recognition.If the two conditions of function 1834 are not met, function 1836 turnsrecognition on, or if it already is on (in the case of a vocabularychange) leaves it on, until a timeout duration has elapsed. The lengthof this timeout duration can be set by the user under the EntryPreferences option in the function menu 4602 shown in FIG. 46. If thespeech button is pressed for longer than a given duration, as describedabove, functions 1838 and 1840 will cause recognition to be on duringthe press but to be turned off at its end.

This recognition duration type provides a quick and easy way for usersto select with one button between toggling speech recognition on andoff, and causing speech recognition to be turned on only during anextended press of a speech button.

Returning to function 1308 of FIG. 13, it can be seen that the selectionof different recognition duration types can allow the user to select howthe Talk button and other speech buttons initiate recognition.

If the user selects the Clear button 1112 shown in FIG. 11, functions1310 through 1314 are performed.

Function 1312 removes any correction window which might be displayed.

Function 1313 sets the prior SipBufferLangContext to reflect the lastone or more words of the SIP buffer. This is done so that if a userpresses the Continue or any other buttons for starting speechrecognition without first pressing the Talk button, the language contextfrom the end of the SIP buffer being cleared can be used to improve therecognition accuracy of the next next word or words dictated.

Function 1314 clears the contents of the SIP buffer without sending anydeletions to the operating system's text input. As stated above, in thespeech SIP shown, the SIP text window 1104, shown in FIG. 11, isdesigned to hold a relatively small body of text. As text is entered oredited in the SIP buffer, characters are supplied to the operatingsystem of the PDA, causing corresponding changes to be made to text inthe application window 1106 shown in FIG. 11. The Clear button enables auser to clear text from the SIP buffer, to prevent it from beingoverloaded, without causing corresponding deletions to be made to textin the application window.

The Continue button 1114 shown in FIG. 11 is intended to be used whenthe user wants to dictate a continuation of the last dictated text, ortext which is to be inserted at the current location in the SIP bufferwindow 1104, shown in FIG. 11. When this button is pressed, function1316, of FIG. 13, causes functions 1318 through 1330 to be performed.Function 1318 removes any correction window, because the pressing of theContinue button indicates that the user has no interest in using thecorrection window. Next, function 1132 tests if the current cursor inthe SIP buffer window has a prior language context that can be used tohelp in predicting the probability of the first word or words of anyutterance recognized as a result of the pressing of the Continue button.If so, it causes that language context to be used. If not, function 1326uses the prior SipBufferLangContext as the language context at the startof recognition initiated by the Continue button. Next, function 1330starts SIP buffer recognition, that is, recognition of text to be outputto the cursor in the SIP buffer, using the current recognition durationmode.

The Continue button allows the user to select recognition in which thefirst word of the recognition is recognized with whatever prior languagecontext is available. Unless the user has pressed the Talk button sincea prior SIP buffer was cleared by use of the Clear button, this caninclude a language context carried over, through use of priorSipBufferLangContext, from such a previously cleared SIP buffer.

It should be appreciated that in some embodiments of the invention abutton could be provided that combined the functions of the Clear andContinue buttons. One press of such a button would both clear the SIPbuffer and start new recognition using the language context from the endof the SIP buffer before it was cleared.

If language contexts is useful for recognition in their respectivevocabularies, the other buttons which start recognition in the SIPbuffer—such as the Names, Punctuation, Number, Alphabravo, Abc, LargeVocabulary, and Continuous/discrete buttons described with regard tofunctions 1350 through 1418 in FIGS. 13 and 14—function similarly to theContinue button with regard to their use of language context. That is,they cause dictation to start using either the language context definedby words before the cursor in the SIP buffer, or if there are no wordsbefore them in the SIP buffer, the language context, if any, defined bythe prior SipBufferLangContext.

If complex language models are used functions related to priorSipBufferLangContext would have to be changed accordingly. For example,if trigram language models are used the prior SipBufferLangContext wouldstore the last two words in a prior SIP buffer, and would effect notonly the recognition of the first but the second word in a new SIPbuffer.

If the user selects the Backspace button 1116 shown in FIG. 11,functions 1332 through 1336 will be performed. Function 1334 tests ifthe SIP is currently in the correction mode. If so, it enters thebackspace into the filter editor of the correction window. Thecorrection window 1200 shown in FIG. 12 includes a first choice window1202. As will be described below in greater detail, the correctionwindow interface allows the user to select and edit one or morecharacters in the first choice window as being part of a filter stringwhich identifies a sequence of initial characters belonging to thedesired recognition word or words. If the SIP is in the correction mode,pressing backspace will delete from the filter string any characterscurrently selected in the first choice window, and if no characters areso selected, will delete the character to the left of the filter cursor1204.

If the SIP is not currently in the correction mode, function 1336 willrespond to the pressing of the Backspace button by entering a backspacecharacter into the SIP buffer and outputting that same character to theoperating system so the same change can be made to the correspondingtext in the application window 1106 shown in FIG. 11.

When the backspace is supplied to the operating system, the OS is alsosupplied with any additional characters necessary to make an externaltext, such as the text in the application window 1106 of FIG. 11, thatreceives such input correspond to the changes in the SIP buffer. As isexplained below with regard to Functions 1520 through 1528, suchadditional characters are necessary when an edit is made other than atthe end of the SIP buffer. This is because an edit other than at the endof the SIP buffer changes text that has already been sent to the OS foruse in an external text. In such a case, backspaces have to be sent tothe OS to delete back to the location in the external text correspondingto the position of the edit in the SIP buffer. After the changed text isinserted or deleted, any portion of SIP buffer text following the changehas to then be sent to the OS for re-insertion into the external text.

If the user changes his cursor location in the external program and thenwants to create new text in the SIP buffer, he or she should use theTALK button, which will cause the SIP buffer to start in a clearedstate. Once subsequent dictation occurs, any words located in the SIPbuffer will correspond to text that has been sent to the OS forinsertion at the new location. This will cause any subsequent SIP bufferchanges made other than at the end of that buffer to delete and changeonly text located immediately before the current cursor in the externalprogram that corresponds to the text currently in the SIP buffer.

If the user selects the New Paragraph button 1118 shown in FIG. 11,functions 1338 through 1342 of FIG. 13 will exit correction mode, if theSIP is currently in it, and they will enter a New Paragraph characterinto the SIP buffer and provide corresponding output to the operatingSystem.

As indicated by functions 1344 through 1348, the SIP responds to userselection of a Space button 1120 in substantially the same manner thatit responds to a backspace, that is, by entering it into the filtereditor if the SIP is in correction mode, and otherwise outputting it tothe SIP buffer and the operating system.

If the user selects one of the Vocabulary Selection buttons 1122 through1132 shown in FIG. 11, functions 1350 through 1370 of FIG. 13, andfunctions 1402 through 1416 FIG. 14, will set the appropriaterecognition mode's vocabulary to the vocabulary corresponding to theselected button and start speech recognition in that mode according tothe current recognition duration mode and other settings for therecognition mode.

If the user selects the Name Recognition button 1122, functions 1350 and1356 set the current mode's recognition vocabulary to the namerecognition vocabulary and start recognition according to the currentrecognition duration settings and other appropriate speech settings.With all of the vocabulary buttons besides the Name and Large Vocabularybuttons, these functions will treat the current recognition mode aseither filter or SIP buffer recognition, depending on whether the SIP isin correction mode. This is because these other vocabulary buttons areassociated with vocabularies used for inputting sequences of charactersthat are appropriate either for defining a filter string or for directentry into the SIP buffer. The large vocabulary and the name vocabulary,however, are often inappropriate for filter string editing and, thus, inthe disclosed embodiment when either large vocabulary or name vocabularyare selected the current recognition mode will be either re-utterance orSIP buffer recognition, depending on whether the SIP is in correctionmode. In other embodiments, name and large vocabulary recognition couldbe used for editing a multiword filter.

In addition to the standard response associated with the pressing of avocabulary button, if the AlphaBravo Vocabulary button is pressed ordouble-clicked, functions 1404 through 1406 cause a list of all thewords used by the International Communication Alphabet (or ICA) to bedisplayed, as is illustrated in window 4002 in FIG. 40. Normally asingle press or click of the AlphaBravo Vocabulary button will causethis list to be displayed. But if users desire to see this list onlywhen specifically desired, they can set a Display_Alpha_On_Double_Clickflag, which will cause the list to be displayed only when the userdouble-clicks the AlphaBravo Vocabulary button.

If a user wants to take more than a short fraction of a second to readthe list of ICA alphabet words, functions 1404 and 1406 will requirethat she or he push on the Alphabravo button long enough (either as thesingle push of a single press or click or the second push of a doubleclick) that it will be considered a continuous “press” by duration logicof FIG. 18.

Often this is not a problem, since press recognition is oftenappropriate for alphabravo spelling, and even when it is not, in manycases, the user can end the press without dictating anything, and thenclick for alphabravo dictation with the duration logic using aclick-related duration.

The need to wait for a double click if Display_Alpha_-On_Double_Clickflag is set will not slow down the user interface significantly, as longas the activity started by the initial click of a double click iscompatible with the activity selected by the recognition duration logicof FIG. 18 in response whether the second click of the double click is aclick or a continuous press. This will be the case for Alphabravorecognition if (1) its discrete and continuous recognition are the same,except that discrete recognition only considers single vocabulary wordrecognition candidates; and (2) it ignores function 1834 of FIG. 18.This is true because the time duration between the first and secondpresses of a double click is shorter than the length of time requiredfor an end of utterance detection, and, thus, the decision about whichof FIG. 18's durations should apply can be delayed until after thatdouble-click time.

In other embodiments, other methods could be used to determine when andhow the ICA alphabet words are displayed, such as, for example, by useof the help button.

If the user selects the Continuous/Discrete Recognition button 1134shown in FIG. 11, functions 1418 through 1422 of FIG. 14 are performed.Function 1420 toggles between continuous recognition mode, which usescontinuous speech acoustic models and allows multiple vocabulary wordrecognition candidates to match a given single utterance, and a discreterecognition mode, which uses discrete recognition acoustic models andonly allows single vocabulary word recognition candidates to berecognized for a single utterance. Function 1422 then starts speechrecognition using either discrete or continuous recognition, as has justbeen selected by the toggling of function 1420.

If the user selects the function key 1110 by pressing it, functions 1424and 1426 call the function menu 4602 shown in FIG. 46. This functionmenu allows the user to select from other options besides thoseavailable directly from the buttons shown in FIGS. 11 and 12.

If the user selects the Help button 1136 shown in FIG. 11, functions1432 and 1434 of FIG. 14 call help mode.

As shown in FIG. 19, when the help mode is entered in response to aninitial pressing of the Help button, a function 1902 displays a helpwindow 2000 providing information about using the help mode, asillustrated in FIG. 20. During subsequent operation of the help mode, ifthe user touches a portion of the SIP interface, functions 1904 and 1906display a help window with information about the touched portion of theinterface that continues to be displayed as long as the user continuesthat touch. This is illustrated in FIG. 21, in which the user has usedthe stylus 904 to press the Filter button 1218 of the correction window.In response, a help window 2100 is shown that explains the function ofthe Filter button. If during the help mode a user double-clicks on aportion of the display, functions 1908 and 1910 display a help windowthat stays up until the user presses another portion of the interface.This enables the user to use the scroll bar 2102 shown in the helpwindow of FIG. 21 to scroll through and read help information too largeto fit on the help window 2102 at one time.

Although not shown in FIG. 19, help windows can also have a Keep Upbutton 2104 to which a user can drag from an initial down press on aportion of the SIP user interface of interest to also select to keep thehelp window up until the touching of a another portion of the SIP userinterface.

When, after the initial entry of the help mode, the user again touchesthe Help button 1136 shown in FIGS. 11, 20, and 21, functions 1912 and1914 remove any help windows and exit the help mode, turning off thehighlighting of the Help button.

If a user taps on a word in the SIP Buffer, functions 1436 through 1438of FIG. 14 make the selected word the current selection and call thedisplayChoiceList routine shown in FIG. 22 with the tapped word as thecurrent selection and with acoustic data associated with the recognitionof the tapped word, if any, the first entry in an utterance list, whichholds acoustic data associated with the current selection.

As shown in FIG. 22, the displayChoiceList routine is called with thefollowing parameters: a selection parameter; a filter string parameter;a filter range parameter; a word type parameter; and a notChoiceListpointer. The selection parameter indicates the selected text in the SIPbuffer for which the routine has been called. The filter stringindicates a sequence of one or more characters indicating elements thatdefine the set of one or more possible spellings with which the desiredrecognition output begins. The filter range parameter defines twocharacter sequences, which bound a section of the alphabet in which thedesired recognition output falls. The word type parameter indicates thatthe desired recognition output is of a certain type, such as a desiredgrammatical type. The NotChoiceList pointer, if non-null, points to alist of one or more words that the user's actions indicate are not adesired word.

Function 2202 of the displayChoiceList routine calls a getchoicesroutine, shown in FIG. 23, with the filter string and filter rangeparameters with which the displayChoiceList routine has been called andwith an utterance list associated with the selection parameter.

As shown in FIGS. 24 and 25, the utterance list 2404 stores soundrepresentations of one or more utterances that have been spoken as partof the desired sequence of one or more words associated with the currentselection. As previously stated, when function 2202 of FIG. 22 calls thegetchoices routine, it does so with a representation, such as 2400 shownin FIG. 24, of that portion of the sound 2402 from which the word orwords of the current selection have been recognized. As was indicated inFIG. 2, the process of speech recognition time-aligns acoustic modelsagainst representations of an audio signal. The recognition systempreferably stores these time alignments so that when corrections orplayback of selected text are desired it can find the correspondingaudio representations from such time alignments.

In FIG. 24 the first entry 2400 in the utterance list is part of acontinuous utterance 2402. The present invention enables a user to addadditional utterances of a desired sequence of one or more words to aselection's utterance list, and recognition can be performed on allthese utterance together to increase the chance of correctly recognizinga desired output. As shown in FIG. 24, such additional utterances caninclude both discrete utterances, such as entry 2400A, as well ascontinuous utterances, such as entry 2400B. Each additional utterancecontains information as indicated by the numerals 2406 and 2408 thatindicates whether it is a continuous or discrete utterance and thevocabulary mode in which it was dictated.

In FIGS. 24 and 25, the acoustic representations of utterances in theutterance list are shown as waveforms. It should be appreciated that inmany embodiments, other forms of acoustic representation will be used,including parameter frame representations such as the representation 110shown in FIGS. 1 and 2.

FIG. 25 is similar to FIG. 24, except that in it, the original utterancelist entry is a sequence of discrete utterances. It shows thatadditional utterance entries used to help correct the recognition of aninitial sequence of one or more discrete utterances can also includeeither discrete or continuous utterances, 2500A and 2500B, respectively.

As shown in FIG. 23, the getchoices routine 2300 includes a function2302 which tests to see if there has been a prior recognition for theselection for which this routine has been called that has been performedwith the current utterance list and filter values (that is, filterstring and filter range values). If so, it causes function 2304 toreturn with the choices from that prior recognition, since there havebeen no changes in the recognition parameters since the time the priorrecognition was made.

If the test of function 2302 is not met, function 2306 tests to see ifthe filter range parameter is null. If it is not null, function 2308tests to see if the filter range is more specific than the currentfilter string, and, if so, it changes the filter string to the commonletters of the filter range. If not, function 2312 nulls the filterrange, since the filter string contains more detailed information thatit does.

As will be explained below, a filter range is selected when a userselects two choices on a choice list as an indication that the desiredrecognition output falls between them in the alphabet. When the userselects two choices that share initial letters, function 2310 causes thefilter string to correspond to those shared letters. This is done sothat when the choice list is displayed, the shared letters will beindicated to the user as one which has been confirmed as correspondingto the initial characters of the desired output.

If the utterance list is not empty and there are any candidates from aprior recognition of the current utterance list, function 2316 causesfunction 2318 and 2320 to be performed. Function 2318 calls afilterMatch routine shown in FIG. 26 for each such prior recognitioncandidate with the candidate's prior recognition score and the currentfilter definitions, and function 2320 deletes those candidates returnedas a result of such calls that have scores below a certain threshold.

As indicated in FIG. 26, the filterMatch routine 2600 performs filteringupon word candidates. In the embodiment of the invention shown, thisfiltering process is extremely flexible, since it allows filters to bedefined by filter strings, filter range, or word type. It is alsoflexible because it allows a combination of word type and either filterstring or filter range specifications, and because it allows ambiguousfiltering, including ambiguous filters where elements in a filter stringare not only ambiguous as to the value of their associated charactersbut also ambiguous as to the number of characters in their associatedcharacter sequences.

When we say a filter string or a portion of a filter string isambiguous, we mean that a plurality of possible character sequences canbe considered to match it. Ambiguous filtering is valuable when usedwith a filter string input, which, although reliably recognized, doesnot uniquely defined a single character, such as is the case withambiguous phone key filtering of the type described below with regard toa cellphone embodiment of many aspects of the present invention.

Ambiguous filtering is also valuable with filter string input thatcannot be recognized with a high degree of certainty, such asrecognition of letter names, particularly if the recognition isperformed continuously. In such cases, not only is there a high degreeof likelihood that the best choice for the recognition of the sequenceof characters will include one or more errors, but also there is areasonable probability that the number of characters recognized in abest-scoring recognition candidate might differ from the number spoken.But spelling all or the initial characters of a desired output is a veryrapid and intuitive way of inputting filtering information, even thoughthe best choice from such recognition will often be incorrect,particularly when dictating under adverse conditions.

The filterMatch routine is called for each individual word candidate. Itis called with that word candidate's prior recognition score, if any, orelse with a score of 1. It returns a recognition score equal to thescore with which it has been called multiplied by the probability thatthe candidate matches the current filter values.

Functions 2602 through 2606 of the filterMatch routine test to see ifthe word type parameter has been defined, and, if so and if the wordcandidate is not of the defined word type, it returns from thefilterMatch function with a score of 0, indicating that the wordcandidate is clearly not compatible with current filter values.

Functions 2608 through 2614 test to see if a current value is definedfor the filter range. If so, and if the current word candidate isalphabetically between the starting and ending words of that filterrange, they return with an unchanged score value. Otherwise they returnwith a score value of 0. Note that functions 2306 through 2313 of thegetchoices routine of FIG. 23 cause the filterMatch routine to only becalled with a non-null filter range if the filter range is more specificthan the filter string. Thus, if filterMatch is called with a non-nullfilter range, it can ignore the filter string and return with eitherfunction 2612 or 2614.

Function 2616 determines if there is a defined filter string. If so, itcauses functions 2618 through 2653 to be performed. Function 2618 setsthe current candidate character, a variable that will be used in thefollowing loop, to the first character in the word candidate for whichfilterMatch has been called. Next, a loop 2620 is performed until theend of the filter string is reached by its iterations. This loopincludes functions 2622 through 2652.

The first function in each iteration of this loop is the test by step2622 to determine the nature of the next element in the filter string.In the embodiment shown, three types of filter string elements areallowed: an unambiguous character, an ambiguous character, and anambiguous element representing a set of ambiguous character sequences,which can be of different lengths.

An unambiguous character unambiguously identifies a letter of thealphabet or other character, such as a space. It can be produced byunambiguous recognition of any form of alphabetic input, but it is mostcommonly associated with letter or ICA word recognition, keyboard input,or non-ambiguous phone key input in phone implementations. Anyrecognition of alphabetic input can be treated as unambiguous merely byaccepting a single best scoring spelling output by the recognition as anunambiguous character sequence.

An ambiguous character is one which can have multiple letter values, butwhich has a definite length of one character. As stated above, this canbe produced by the ambiguous pressing upon keys in a telephoneembodiment, or by speech or character recognition of letters. It canalso be produced by continuous recognition of letter names in which allthe best scoring character sequences have the same character length.

An ambiguous length element is commonly associated with the output ofcontinuous letter name recognition or handwriting recognition. Itrepresents multiple best-scoring letter sequences against handwriting orspoken input, some of which sequences can have different lengths.

If the next element in the filter string is an unambiguous character,function 2624 causes functions 2626 through 2630 to be performed.Function 2626 tests to see if the current candidate character matchesthe current unambiguous character. If not, the call to filterMatchreturns with a score of 0 for the current word candidate. If so,function 2630 increments the position of the current candidatecharacter.

If the next element in the filter string is an ambiguous character,function 2632 causes functions 2634 through 2642 to be performed.Function 2634 tests to see if the current character fails to match oneof the recognized values of the ambiguous character. If so, function2636 returns from the call to filterMatch with a score of 0. Otherwise,functions 2638 through 0.2642 alter the current word candidate's scoreas a function of the probability of the ambiguous character matching thecurrent candidate character's value, and then increment the currentcandidate character's position.

If the next element in the filter string is an ambiguous length element,function 2644 causes a loop 2646 to be performed for each charactersequence represented by the ambiguous length element. This loopcomprises functions 2648 through 2650. Function 2648 tests to see ifthere is a matching sequence of characters starting at the currentcandidate's character position that matches the current charactersequence of the loop 2646. If so, function 2649 alters the wordcandidate's score as a function of the probability of the recognizedmatching sequence represented by the ambiguous length element, function2650 increments the current position of the current candidate characterby the number of the characters in the matching ambiguous lengthsequence, and then function 2650 breaks out of the for loop 2646 andcause program flow to advance to the next iternation of the until loop2620, either by starting another iteration of that loop, or if thecurrent candidate character points to the end of the current filterstring, by advancing to function 2653.

If the for 2646 is completed without any sequence of characters startingat the current word candidate's character position that match any of thesequences of characters associated with the ambiguous length element,functions 2651 and 2652 return from the call to filterMatch with a scoreof 0.

If the until loop 2620 is completed, the current word candidate willhave matched against the entire filter string. In this case, function2653 returns from filter-Match with the current word's score produced bythe loop 2620.

If the test of step 2616 finds that there is no filter string defined,step 2654 merely returns from filterMatch with the current wordcandidate's score unchanged.

Returning now to function 2318 of FIG. 23, it can be seen that the callto filterMatch for each word candidate will return a score for thecandidate. These are the scores that are used to determine which wordcandidates to delete in function 2320.

Once these deletions have taken place, function 2322 tests to see if thenumber of prior recognition candidates left after the deletions, if any,of function 2320 is below a desired number of candidates. Normally thisdesired number would represent a desired number of choices for use in achoice list. If the number of prior recognition candidates is below sucha desired number, functions 2324 through 2336 are performed. Function2324 performs speech recognition upon every one of the one or moreentries in the utterance list 2404, shown in FIGS. 24 and 25. Asindicated by functions 2326 and 2328, this recognition process includesa test to determine if there are both continuous and discrete entries inthe utterance list, and, if so, it limits the number of possible wordcandidates in recognition of the continuous entries to a numbercorresponding to the number of individual utterances detected in one ormore of the discrete entries. The recognition of function 2324 alsoincludes recognizing each entry in the utterance list with eithercontinuous or discrete recognition, depending upon the respective modethat was in effect when each was received, as indicated by thecontinuous or discrete recognition indication 2406 shown in FIGS. 24 and25. As indicated by 2332, the recognition of each utterance list entryalso includes using the filterMatch routine previously described andusing a language model in selecting a list of best-scoring acceptablecandidates for the recognition of each such utterance. In thefilterMatch routine, the vocabulary indicator 2408 shown in FIGS. 24 and25 for the most recent utterance in the utterance list is used as a wordtype filter to reflect any indication by the user that the desired wordsequence is limited to one or more words from a particular vocabulary.The language model used is a PolyGram language model, such as a bigramor trigram language model, which uses any prior language contexts thatare available in helping to select the best-scoring candidates.

After the recognition of one or more entries in the utterance list hasbeen performed, if there is more than one entry in the utterance list,functions 2334 and 2336 pick a list of best scoring recognitioncandidates for the utterance list based on a combination of scores fromdifferent recognitions. It should be appreciated that in someembodiments of this aspect of the invention, combination of scoringcould be used from the recognition of the different utterances so as toimprove the effectiveness of the recognition using more than oneutterance.

If the number of recognition candidates produced by functions 2314through 2336 is less than the desired number, and if there is a non-nullfilter string or filter range definition, functions 2338 and 2340 usefilterMatch to select a desired number of additional choices from thevocabulary associated with the most recent entry in the utterance list,or the current recognition vocabulary if there are no entries in theutterance list.

If there are no candidates from either recognition or the currentvocabulary by the time the getchoices routine of FIG. 23 reachesfunction 2342, function 2344 uses the best-scoring character sequencesthat match the current filter string as choices, up to the desirednumber of choices. When the filter string contains nothing butunambiguous characters, only the single character sequence that matchesthose unambiguous characters will be selected as a possible choice.However, where there are ambiguous characters and ambiguous lengthelements in the filter string, there will be a plurality of suchcharacter sequence choices. And where ambiguous characters withambiguous length elements have different probabilities associated withdifferent possible corresponding sequences of one or more characters,the choices produced by function 2344 will be scored correspondingly bya scoring mechanism corresponding to that shown in functions 2616through 2606 the three of FIG. 26.

When the call to getchoices returns, a list of choices produced byrecognition, by selection from a vocabulary according to filter, or byselection from a list of possible filters will normally be returned.

Returning now to FIG. 22, when the call to getchoices in function 2202returns to the displayChoiceList routine, function 2204 tests to see ifthe following three conditions currently exits: no filter has beendefined for the current selection, there has not been any re-utteranceadded to the current selection's utterance list, and the selection forwhich displayChoiceList has been called is not in the notChoiceList,which includes a list of one or more words the user's inputs haveindicated are not desired as recognition candidates. If these threenegative conditions are met, function 2206 makes the current selectionthe first choice for display in the correction window, which the routineis to create.

Next, function 2210 removes any other candidates from the list ofcandidates produced by the call to the get-Choices routine that arecontained in the notChoiceList.

Next, if the first choice has not already been selected by function2206, function 2212 makes the best-scoring candidate returned by thecall to getchoices the first choice for the subsequent correction windowdisplay. If there is no single best-scoring recognition candidate,alphabetical order can be used to select the candidate which is to bethe first choice.

Next, if there is a filter, function 2214 causes functions 2218 and 2220to be performed. Function 2218 selects those characters of the firstchoice which correspond to the filter string, if any, for specialdisplay. As will be described below, in the preferred embodiments,characters in the first choice which correspond to an unambiguous filterare indicated in one way, and characters in the first choice whichcorrespond to an ambiguous filter are indicated in a different way sothat the user can appreciate which portions of the filter stringcorrespond to which type of filter elements.

Next, function 2220 places a filter cursor before the first character ofthe first choice that does not correspond to the filter string. Whenthere is no filter string defined, this cursor will be placed before thefirst character of the first choice.

Next, function 2222 causes steps 2224 through 2228 to be performed ifthe getchoices routine returned any candidates other than the currentfirst choice. In this case, function 2224 creates a firstcharacter-ordered (e.g., alphabetically and/or numerically ordered)choice list from a set of the best-scoring such candidates that will allfit in the correction window at one time. If there are any morerecognition candidates, functions 2226 and 2228 create a secondcharacter-ordered choice list of up to a preset number of screens forall such choices from the remaining best-scoring candidates.

When all this has been done, function 2230 displays a correction windowshowing the current first choice, an indication of which of itscharacters, if any, are in the filter, an indication of the currentfilter cursor location, and with the first choice list, as shown in FIG.12. Then function 2232 turns on correction mode.

In FIG. 12 the first choice, “this”, 1206 is shown in the first choicewindow 1202, the filter cursor 1204 is shown before the first characterof the first choice (since no filter has yet been defined), and thefirst choice list 1208 is shown in the correction window 1200.

It should be appreciated that the displayChoiceList routine can becalled with a null value for the current selection as well as with atext selection which has no associated utterances. In either case, itwill respond to alphabetic filtering input by performing word completionbased on the operation of functions 2338 and 2344 of FIG. 23.

The combination of the display_choice_list and the get-Choices routinesallow great flexibility. It allows (a) selection of choices for therecognition of an utterance without the use of filtering orre-utterances, (b) use of filtering and/or re-utterances to help correcta prior recognition, (c) performing word completion upon alphabeticfiltering input (and, if desired, to help such alphabetic completionprocess by entering a subsequent utterance), (d) spelling a word whichis not in the current vocabulary with alphabetic input, and (e) mixingand matching different forms of alphabetic input including forms whichare unambiguous, ambiguous with regard to characters and ambiguous withregard to both characters and length.

Returning now to FIG. 14, we've explained how functions 1436 and 1438respond to a tap on a word in the SIP buffer by calling the displayChoice List routine, which in turn, causes a correction window such asthe correction window 1200 shown in FIG. 12 to be displayed. The abilityto display a correction window with its associated choice list merely bytapping on a word provides a fast and convenient way for enabling a userto correct single word errors.

If the user double taps on a selection in the SIP buffer, functions 1440through 1444 escape from any current correction window that might bedisplayed, and start SIP buffer recognition according to currentrecognition duration modes and settings using the current languagecontext of the current selection. The recognition duration logicresponds to the duration of the key press type associated with thesecond tap of such a double-click in determining whether to respond asif there has been either a press or a click for the purposes describedabove with regard to FIG. 18. The output of any such recognition willreplace the current selection. Although not shown in the figures, if theuser double taps on a word in the SIP buffer that was not previouslyselected or part of a selection, it is treated as the current selectionfor the purpose of function 1444

If the user taps in any portion of the SIP buffer which does not includetext, such as between words or before or after the text in the buffer,function 1446 causes functions 1448 to 1452 to be performed. Function1448 plants a cursor at the location of the tap. If the tap is locatedat any point in the SIP buffer window which is after the end of the textin the SIP buffer, the cursor will be placed after the last word in thatbuffer. If the tap is a double tap, functions 1450 1452 start SIP bufferrecognition at the new cursor location according to the currentrecognition duration modes and other settings, using the duration of thesecond touch of the double tap for determining whether it is to beresponded to as a press or a click.

FIG. 15 is a continuation of the pseudocode described above with regardto FIGS. 13 and 14.

If the user drags across part of one or more words in the SIP buffer,functions 1502 and 1504 call the display Choice List routine describedabove with regard to FIG. 22 with all of the words that are all orpartially dragged across as the current selection and with the acousticdata associated with the recognition of those words, if any, as thefirst entry in the utterance list. If the selection involves more than acertain number of words, it may be preferred to merely mark the selectedtext as selected and forego the display of a correction window, becauseit is unlikely a user would want to use a correction window to correcttext of more than a given length.

If the user drags across an initial part of an individual word in theSIP buffer, functions 1506 and 1508 call the displayChoiceList functionwith that word as the selection, with that word added to thenotChoiceList, with the dragged initial portion of the word as thefilter string, and with the acoustic data associated with that word asthe first entry in the utterance list. This programming interprets thefact that a user has dragged across only the initial part of a word asan indication that the entire word is not the desired choice, asindicated by the fact that the word is added to the notChoiceList.

If a user drags across the ending of an individual word in the SIPbuffer, functions 1510 and 1512 call the displayChoiceList routine withthe word as a selection, with the selection added to the notChoiceList,with the undragged initial portion of the word as the filter string, andwith the acoustic data associated with a selected word as the firstentry in the utterance list.

If an indication is received that the SIP buffer has more than a certainamount of text, functions 1514 and 1516 display a warning to the userthat the buffer is close to full. In the disclosed embodiment thiswarning informs the user that the buffer will be automatically clearedif more than an additional number of characters are added to the buffer,and requests that the user verify that the text currently in the bufferis correct and then press talk or continue, which will clear the buffer.

If an indication is received that the SIP buffer has received textinput, such as in response to any speech recognition, function 1518causes functions 1520 through 1528 to be performed. Function 1520 teststo see if the cursor is currently at the end of the SIP buffer. If not,function 1522 outputs to the operating system a number of backspacesequal to the distance from the last letter of the SIP buffer to thecurrent cursor position within that buffer. Next, function 1526 causesthe text input, which can be composed of one or more characters, to beoutput into the SIP buffer at its current cursor location. Steps 1527and 1528 output the same text sequence and any following text in the SIPbuffer to the text input of the operating system.

The fact that function 1522 feeds backspace to the operating systembefore the recognized text is sent to the OS as well as the fact thatfunction 1528 feed any text following the received text to the operatingsystem causes any change made to the text of the SIP buffer thatcorresponds to text previously supplied to the application window toalso be made to that text in the application window.

If any of the user inputs described above in FIGS. 13 through 15 isreceived when the system is in one-at-a-time mode when a correctionwindow is displayed but the system is not in correction mode, functions1530 and 1532 confirms the recognition of the first choice in thecorrection window.

This causes the display of the correction window to be removed, and thefirst choice in the correction window to remain as the output for theprior recognition, both in the SIP buffer and the text output to the OS.It also causes the correction window's first choice to be treated as thecorrect recognition for purposes of updating the current languagecontext for the recognition of one or more subsequent words; for thepurpose of providing data for use in updating the language model; andfor the purpose of providing data for updating acoustic models.

The operation of functions 1530 and 1532 enables a user to confirm theprior recognition of the word in one-at-a-time mode by any one of alarge number of inputs which can be used to also advance the recognitionprocess.

If any text input is received from speech recognition when the SIPprogram is in one-at-a-time mode, functions 1536 through 1538 call thedisplayChoiceList routine for the recognized text, and turn offcorrection mode.

When displayChoiceList is called, its function 2232, shown in FIG. 22,switches the system to correction mode, but function 1538 undoes theeffect of function 2232 when displayChoiceList is called by function1537 in one-at-a-time mode.

As has been described above, correction mode is turned off because inone-at-a-time mode, a correction window is displayed automatically eachtime speech recognition is performed upon an utterance of a word, andthus there is a relatively high likelihood that a user intends inputsupplied to the non-correction window aspects of the SIP interface to beused for purposes other than input into the correction window. On theother hand, when the correction window is being displayed as a result ofspecific user input indicating a desire to correct one or more words,correction mode is entered so that certain non-correction window inputswill be directed to the correction window.

One-At-A-Time mode allows a user to enter a series of utterances; seethe choice list produced by the recognition of each; and confirm thecurrent first choice, when it is correct, by merely entering theutterance of the next word or by entering another non-correction windowinput. Thus, once functions 1530 and 1532 use a non-correction windowinput to confirm a first choice in One-At-A-Time mode, thenon-correction window input is then used to cause the one or morefunctions associated it in the portion of FIGS. 13 through 15 abovefunctions 1530 and 1532 to be performed. Thus, although functions 1530and 1532 are shown below functions 1302 through 1528 in FIGS. 13 through15, in most actual programming, their actual code would be performedbefore such other functions.

It should be appreciated that if the user is in one-at-a-time mode andgenerates inputs indicating a desire to correct the word shown in achoice list, the SIP will be set to the correction mode, and subsequentinput during the continuation of that mode will not cause operation offunction 1532.

Function 1542 in FIG. 15 indicates the start of the portion of the mainresponse loop of the SIP program that relates to inputs received when acorrection window is displayed. This portion extends through theremainder of FIG. 15 and all of FIGS. 16 and 17.

If the Escape button 1210 of a correction window shown in FIG. 12 ispressed, functions 1544 and 1546 cause the SIP program to exit thecorrection window and correction mode without changing the currentselection.

If the Delete button 1212 of the correction window shown in FIG. 12 ispressed, functions 1548 and 1550 exit the correction window, delete thecurrent selection in the SIP buffer, and send an output to the operatingsystem, which causes a corresponding change to be made to any text inthe application window corresponding to that in the SIP buffer.

If the New button 1214 shown in FIG. 12 is pressed, function 1552 causesfunctions 1553 to 1556 to be performed. Function 1553 exits thecorrection window, deletes the current selection in the SIP buffercorresponding to the correction window, and sends output to theoperating system so as to cause a corresponding change to text in theapplication window. Function 1554 sets the recognition mode to the newutterance default, which will normally be the large vocabularyrecognition mode, and can be set by the user to be either continuous ordiscrete recognition mode. Function 1556 starts SIP buffer recognitionusing the current recognition duration mode and other recognitionsettings. SIP buffer recognition is recognition that provides an inputto the SIP buffer, according to the operation of functions 1518 to 1528,described above.

FIG. 16 continues the illustration of the response of the main loop ofthe SIP program to input received during the display of a correctionwindow.

If the re-utterance button 1216 of FIG. 12 is pressed, function 1602causes functions 1603 through 1610 to be performed. Function 1603 setsthe SIP program to the correction mode if it is not currently in it.This will happen if the correction window has been displayed as a resultof a discrete word recognition in one-at-a-time mode and the userresponds by pressing a button in the correction window, in this case theRe-utterance button, indicating an intention to use the correctionwindow for correction purposes. Next, function 1604 sets the recognitionmode to the current recognition mode associated with re-utterancerecognition. Then function 1606 receives one or more utterancesaccording to the current re-utterance recognition duration mode andother recognition settings, including vocabulary. Next function 1608adds the one or more utterances received by function 1606 to theutterance list for the correction window selection, along with anindication of the vocabulary mode at the time of those utterances, andwhether continuous or discrete recognition is in effect. This causes theutterance list 2004 shown in FIGS. 24 and 25 to have an additionalutterance.

Then function 1610 calls the displayChoiceList routine of FIG. 22,described above. This in turn will call the getchoices functiondescribed above regarding FIG. 23 and will cause functions 2306 through2336 of that figure to perform re-utterance recognition using the newutterance list entry.

If the Filter button 1218 shown in FIG. 12 is pressed, function 1612 ofFIG. 16 causes functions 1613 to 1620 to be performed. Function 1613enters the correction mode, if the SIP program is not currently in it,as described above with regard to Function 1603. Function 1614 tests tosee whether the current entry mode is a speech recognition mode and, ifso, causes function 1616 to start filter recognition according to thecurrent filter recognition duration mode and settings. This causes anyinput generated by such recognition to be directed to the cursor of thecurrent filter string. If on the other hand the current filter entrymode is a non-speech recognition entry window mode, functions 1618 and1620 call the appropriate entry window. As described below, in theembodiment of the invention shown, these non-speech entry window modescorrespond to a character recognition entry mode, a handwritingrecognition entry mode, and a keyboard entry mode.

If the user presses the Word Form button 1220 shown in FIG. 12,functions 1622 through 1624 cause the correction mode to be entered ifthe SIP program is not currently in it, and cause the word form listroutine of FIG. 27 to be called for the current first choice word. Untila user provides input to the correction window that causes a redisplayof the correction window, the current first choice will normally be theselection for which the correction window has been called. This meansthat by selecting one or more words in the SIP buffer and by pressingthe Word Form button in the correction window, a user can rapidly selecta list of alternate forms for any such a selection.

FIG. 27 illustrates the function of the wordFormList routine. If acorrection window is already displayed when it is called, functions 2702and 2704 treat the current best choice as the selection for which theword form list will be displayed. If the current selection is one word,function 2706 causes functions 2708 through 2714 to be performed. If thecurrent selection has any homonyms, function 2708 places them at thestart of the word form choice list. Next, step 2710 finds the root formof the selected word, and function 2712 creates a list of alternategrammatical forms for the word. Then function 2714 alphabetically ordersall these grammatical forms in the choice list after any homonyms, whichmay have been added to the list by function 2708.

If, on the other hand, the selection is composed of multiple words,function 2716 causes functions 2718 through functions 2728 to beperformed. Function 2718 tests to see if the selection has any spacesbetween its words. If so, function 2720 adds a copy of the selection tothe choice list, which has no such spaces between its words, andfunction 2222 adds a copy of the selection with the spaces replaced byhyphens. Although not shown in FIG. 27, additional functions can beperformed to replace hyphens with spaces or with the absence of spaces.If the selection has multiple elements subject to the samespelled/non-spelled transformation function, 2726 adds a copy of theselection and all prior choices transformations to the choice list. Forexample, this will transform a series of number names into a numericalequivalent, or reoccurrences of the word “period” into correspondingpunctuation marks. Next, function 2728 alphabetically orders the choicelist.

Once the choice list has been created either for a single word or amultiword selection, function 2730 displays a correction window showingthe selection as the first choice, the filter cursor at the start of thefirst choice, and a scrollable choice list and a scrollable list. Insome embodiments where the selection is a single word, the filter ofwhich has a single sequence of characters that occurs in all itsgrammatical forms, the filter cursor could be placed after that commonsequence with the common sequence indicated as an unambiguous filterstring.

In some embodiments of the invention, the word form list provides onesingle alphabetically ordered list of optional word forms. In otherembodiments, options can be ordered in terms of frequency of use, orthere could be a first and a second alphabetically ordered choice list,with the first choice list containing a set of the most commonlyselected optional forms which will fit in the correction window at onetime, and the second list containing less commonly used word forms.

As will be demonstrated below, the word form list provides a very rapidway of correcting a very common type of speech recognition error, thatis, an error in which the first choice is a homonym of the desired wordor is an alternate grammatical form of it.

If the user presses the Capitalization button 1222 shown in FIG. 12,functions 1626 through 1628 will enter the correction mode if the systemis currently not in it and will call the capitalized cycle function forthe correction window's current first choice. The capitalized correctioncycle will cause a sequence of one or more words which do not all haveinitial capitalization to have initial capitalization of each word, willcause a sequence of one or more words which all have initialcapitalization to be changed to an all capitalized form, and will causea sequence of one or more words which have an all capitalized form to bechanged to an all lower case form. By repeatedly pressing theCapitalization button, a user can rapidly select between these forms.

If the user selects the Play button 1224 shown in FIG. 12, functions1630 and 1632 cause an audio playback of the first entry in theutterance list associated with the correction window's associatedselection, if any such entry exists. This enables a user to hear exactlywhat was spoken with regard to a mis-recognized sequence of one or morewords. Although not shown, the preferred embodiments enable a user toselect a setting which automatically causes such audio to be playedautomatically when a correction window is first displayed.

If the Add Word button 1226 shown in FIG. 12 is pressed when it is notdisplayed in a grayed state, function 1634 and 1636 call a dialog boxthat allows a user to enter the current first choice word into eitherthe active or backup vocabulary. In this particular embodiment of theSIP recognizer, the system uses a subset of its total vocabulary as theactive vocabulary that is available for recognition during the normalrecognition using the large vocabulary mode. Function 1636 allows a userto make a word that is normally in the backup vocabulary part of theactive vocabulary. It also allows the user to add a word that is inneither vocabulary but which has been spelled in the first choice windowby use of alphabetic input, to be added to either the active or backupvocabulary. It should be appreciated that in other embodiments of theinvention having greater hardware resources, there would be no need fordistinction between an active and a backup vocabulary.

The Add Word button 1226 will only be in a non-grayed state when thefirst choice word is not currently in the active vocabulary. Thisprovides an indication to the user that he or she may want to add thefirst choice to either the active or backup vocabulary.

If the user selects the Check button 1228 shown in FIG. 12, functions1638 through 1648 remove the current correction window and output itsfirst choice to the SIP buffer and feed to the operating system asequence of keystrokes necessary to make a corresponding change to textin the application window.

If the user taps one of the choices 1230 shown in the correction windowof FIG. 12, functions 1650 through 1653 remove the current correctionwindow, and output the selected choice to the SIP buffer and feed theoperating system a sequence of keystrokes necessary to make thecorresponding change in the application window.

If the user taps on one of the ChoiceEdit buttons 1232 shown in FIG. 12,function 1654 causes functions 1656 through 1658 to be performed.Function 1656 changes to correction mode if the system is not alreadycurrently in it. Function 1656 makes the choice associated with thetapped ChoiceEdit button the first choice and the current filter string,and then function 1658 calls the displayChoiceList with the new filterstring. As will be described below, this enables a user to select achoice word or sequence of words as the current filter string and thento edit that filter string, normally by deleting any characters from itsend which disagree with the desired word.

If the user drags across one or more initial characters of any choice,including the first choice, functions 1664 through 1666 change thesystem to correction mode if it is not in it, and call thedisplayChoiceList with the dragged choice added to the notChoiceList andwith the dragged initial portion of the choice as the filter string.These functions allow a user to indicate that a current choice is notthe desired first choice but that the dragged initial portion of itshould be used as a filter to help find the desired choice.

FIG. 17 provides the final continuation of the list of functions whichthe SIP recognizer makes in response to correction window input.

If the user drags across the ending of a choice, including the firstchoice, functions 1702 and 1704 enter the correction mode if the systemis currently not already in it, and call displayChoiceList with thepartially dragged choice added to the notChoiceList and with theundragged initial portion of the choice as the filter string.

If the user drags across two choices in the choice list, functions 1706through 1708 enter the correction mode if the system is not currently init, and call displayChoiceList with the two choices added to thenotChoiceList and with the two choices as the beginning and ending wordsin the definition of the current filter range.

If the user taps between characters on the first choice, functions 1710through 1712 enter the correction mode if the SIP is not already in it,and move the filter cursor to the tapped location. No call is made todisplayChoiceList at this time because the user has not yet made anychange to the filter.

If the user enters a backspace by pressing the Backspace button 1116shown in FIG. 12 when in correction mode, as described above with regardto function 1334 of FIG. 13, function 1714 causes functions 1718 through1720 to be performed. Function 1718 calls the filterEdit routine ofFIGS. 28 and 29 with a backspace is input.

As will be illustrated with regard to FIG. 28, the filterEdit routine2800 is designed to give the user flexibility in the editing of a filterwith a combination of unambiguous, ambiguous, and/or ambiguous lengthfilter elements.

This routine includes a function 2801 which copies all the elements ofthe prior filter string at the time of the call to filterEdit into adata structure named old filter string. As is explained below withregard to functions 2834 through 2922 in FIGS. 28 and 29, old filterstring is used to remember any elements of the prior filter which mightextend past a new element that is being added to the filter by the callthe filterEdit.

Then function 2802 tests to see if there are any characters in thechoice with which it has been called before the current location of thefilter cursor. If so, function 2806 makes the characters in the choicewith which the routine has been called before the location of the filtercursor, the new filter string, with all the characters in that stringunambiguously defined. This enables a user to define any part of a firstchoice before the location of an edit to be automatically confirmed asan unambiguously correct filter character sequence.

If the test of function 2802 does not find any characters before thecurrent filter cursor position, function 2806 clears the new filterstring.

Next, the function 2807 tests to see if the input with which filterEdithas been called is a backspace. If so, it causes functions 2808 through2812 to be performed.

Functions 2808 and 2810 delete the last character of the new filterstring (if there is one) if the filter cursor is a non-selection cursor.If the filter cursor corresponds to a selection of one or morecharacters in the current first choice, these characters were alreadyremoved from inclusion in the new filter by the operation of function2805 just described.

Then function 2812 returns from the call to filterEdit with the newfilter, which will be an unambiguous filter string comprised of thecharacters, if any, that occurred before the backspaced character in thefirst choice of the correction window.

If the input with which the filterEdit routine is called is one or moreunambiguous characters, functions 2814 and 2816 add the one or moreunambiguous characters to the end of the new filter string.

If the input to the filterEdit routine is a sequence of one or moreambiguous characters of fixed length, functions 2818 and 2820 place anelement representing each ambiguous character in the sequence at the endof the new filter.

If the input to the filterEdit routine is an ambiguous length element,function 2822 causes functions 2824 through 2832 to be performed.

Function 2824 causes a for loop comprised of functions 2826 and 2828 tobe performed for each of one or more best scoring character sequencesassociated with the ambiguous input. Function 2826 tests if the currentcharacter sequence from the ambiguous input, when added to the priorunambiguous part of the new filter string (if any) matches all or aninitial part of one or more vocabulary words. If so, function 2828increases the score associated with the character sequence as a functionof the probability of the one or more vocabulary words it matches. Thisis done to favor character sequences which could be part of vocabularyword spellings, because, as a general rule, such character sequences aremore likely to have been intended.

Next function 2830 selects a set of the best scoring character sequencesfor association with anew ambiguous filter element which is added to theend of the new filter by function 2832. The selection of function 2830allows character sequences which cannot be part of the spelling of avocabulary word to be included in the new ambiguous filter element,provided that have a high enough relative score based on characterrecognition alone.

Next, a loop 2834 is performed for each filter element in the old filterstring. This loop contains the functions 2836 through 2850 shown in theremainder of FIG. 28 and the functions 2900 through 2920 shown in FIG.29.

If the current old filter string element of the loop 2834 is anambiguous, fixed length element that extends beyond a new fixed lengthelement which has been added to the new filter string by functions 2814through 2820, functions 2836 and 2838 add the portion of the oldelement, if any, that extends beyond the new element to the end of thenew filter string. This is done because editing of a filter string otherthan by use of the Backspace button is not intended to delete previouslyentered ambiguous filter information that corresponds to part of theprior filter to the right of the new edit.

If the current old element of the loop 2834 is an ambiguous, fixedlength element that extends beyond some sequences in a new ambiguouslength element that has been added to the end of the new filter stringby operation of functions 2822 through 2832, function 2840 causesfunctions 2842 through 2850 to be performed. Function 2842 performs aloop for each character sequence represented by the new ambiguous lengthelement that has been added to the filter string. The loop performed foreach such character sequence of the new ambiguous length elementincludes a loop 2844 performed for each character sequence in thecurrent old ambiguous fixed length element of the loop 2834. This innerloop 2844 includes a function 2846, which tests to see if the oldelement matches and extends beyond the current sequence in the newelement. If so, function 2848 adds to the list of character sequencesrepresented by the new ambiguous length element a new sequence ofcharacters corresponding to the current sequence from the new elementplus the portion of the sequence from the old element that extendsbeyond that current sequence from the new element. As indicated atfunction 2850, once the new character sequence is formed by theconcatenation of the current sequence from the new element and theextension from the old element, the current sequence from the newelement is marked for deletion, since it is being replaced by theconcatenated sequence of which it is a part.

If the current old element is an ambiguous length element that containsany character sequences that extend beyond a new fixed length elementthat has been added to the new filter, function 2900 of FIG. 29 causesfunctions 2902 through 2910 to be performed.

Function 2902 is a loop which is performed for each sequence representedby the old ambiguous length element. It is composed of a test 2904 thatchecks to see if the current sequence from the old element matches andextends beyond any sequence in the new fixed length element. If so,function 2906 creates a new character sequence corresponding to thatpart of the sequence from the old element that extends beyond the new.After this loop has been completed, a function 2908 tests to see if anynew sequences have been created by the function 2906, and if so, theycause function 2910 to add that new ambiguous length element to the endof the new filter, after the new element. This new ambiguous lengthelement represents the possibility of each of the sequences created byfunction 2906. Preferably a probability score is associated with eachsuch new sequence based on the relative probability scores of each ofthe character sequences which were found by the loop 2902 to match thecurrent new fixed length element.

If the current old element is an ambiguous length element that has somecharacter sequences that extend beyond some character sequences in a newambiguous length element, function 2912 causes functions 2914 through2920 to be performed.

Function 2914 is a loop that is performed for each character sequence inthe new ambiguous length element. It is composed of an inner loop 2916which is performed for each character sequence in the old ambiguouslength element and a function 2922.

The inner loop is composed of functions 2918 and 2920, which test to seeif the character sequence from the old element matches and extendsbeyond the current character sequence from the new element. If so, theyassociate with the new ambiguous length element, a new charactersequence corresponding to the current sequence from the new element plusthe extension from the current old element character sequence.

The function 2922 is performed at the end of the iteration performed byloop 2914 for a current sequence in the new ambiguous length element. Ifall sequences in old ambiguous length element match and extend beyondthe current sequence in new ambiguous length element, function 2922indicate that the current sequence from the new element is to bereplaced, since it has been totally replaced by new elements created byfunction 2920.

Once all the functions in the loop 2834 are completed, function 2924returns from the call to filterEdit with the new filter string which hasbeen created by that call.

It should be appreciated that in many embodiments of various aspects ofthe invention a different and often more simple filter-editing schemecan be used. But it should be appreciated that one of the majoradvantages of the filter-Edit scheme shown in FIGS. 28 and 29 is that itenables one to enter an ambiguous filter quickly, such as by continuousletter recognition, and then to subsequently edit it by more reliablealphabetic entry modes, or even by subsequent continuous letterrecognition. For example, this scheme would allow a filter entered bythe continuous letter recognition to be all or partially replaced byinput from discrete letter recognition, ICA word recognition, or evenhandwriting recognition. Under this scheme, when a user edits an earlierpart of the filter string, the information contained in the latter partof the filter string is not destroyed unless the user indicates such anintent, which in the embodiment shown is by use of the backspacecharacter.

Returning now to FIG. 17, when the call to filterEdit in function 1718returns, function 1720 calls displaychoiceList for the selection withthe new filter string that has been returned by the call to filterEdit.

Whenever filtering input is received, either by the results ofrecognition performed in response to the pressing of the filter keydescribed above with regard to function 1612 of FIG. 16, or by any othermeans, functions 1722 through 1738 are performed.

Function 1724 tests to see if the system is in one-at-a-time recognitionmode and if the filter input has been produced by speech recognition. Ifso, it causes functions 1726 to 1730 to be performed. Function 1726tests to see if a filtercharacterchoicefiltercharacter window, such aswindow 3906 shown in FIG. 39, is currently displayed. If so, function1728 closes that filter choice window and function 1730 calls filterEditwith the first choice filter character as input. This causes allprevious characters in the filter string to be treated as anunambiguously defined filter sequence. Regardless of the outcome of thetest of function 1726, a function 1732 calls filterEdit for the newfilter input which is causing operation of function 1722 and thefunctions listed below it. Then, function 1734 calls displayChoiceListfor the current selection and the new filter string. Then, if the systemis in one-at-a-time mode, functions 1736 and 1738 call thefiltercharacterchoice routine with the filter string returned byfilterEdit and with the newly recognized filter input character as theselected filter character.

FIG. 30 illustrates the operation of the filtercharacterchoicesubroutine 3000.

It includes a function 3002 which tests to see if the selected filtercharacter with which the routine has been called corresponds to aneither an ambiguous character or an unambiguous character in the currentfilter string having multiple best choice characters associated with it.If this is the case, function 3004 sets a filtercharacterchoice listequal to all characters associated with that character. If the number ofcharacters is more than will fit on the filtercharacterchoice list atone time, the choice list can have scrolling buttons to enable the userto see such additional characters. Preferably the choices are displayedin alphabetical order to make it easier for the user to more rapidlyscan for a desired character.

The filtercharacterchoice routine of FIG. 30 also includes a function3006 which tests to see if the selected filter character corresponds toa character of an ambiguous length filter string element in the currentfilter string. If so, it causes functions 3008 through 3014 to beperformed.

Function 3008 tests to see if the selected filter character is the firstcharacter of the ambiguous length element. If so, function 3010 sets thefiltercharacterchoice list equal to all the first characters in any ofthe ambiguous element's associated character sequences. If the selectedfilter character does not correspond to the first character of theambiguous length element, functions 3012 and 3014 set thefiltercharacterchoice list equal to all characters in any charactersequences represented by the ambiguous element that are preceded by thesame characters that precede the selected filter character in thecurrent first choice. Once either functions 3002 and 3004 or functions3006 though 3014 have created a filtercharacterchoice list, function3016 displays that choice list in a window, such as the window 3906shown in FIG. 39 If the SIP program receives a selection by a user of afiltercharacterchoice in a filtercharacterchoice window, function 1740causes functions 1742 through 1746 to be performed. Function 1742 closesthe filter choice window in which such a selection has been made.Function 1744 calls the filterEdit function for the current filterstring with the character that has been selected in the filter choicewindow as the new input. Then function 1746 calls the displayChoiceListroutine with the new filter string returned by filterEdit.

If a drag upward from a character in a filter string, of the type shownin the correction windows 4526 and 4538 of FIG. 45, function 1747 causesfunctions 1748 through 1750 to be performed. Function 1748 calls thefiltercharacterchoice routine for the character which has been draggedupon, which causes a filtercharacterchoice window to be generated for itif there are any other character choices associated with that character.If the drag is released over a filter choice character in this window,function 1749 generates a selection of the filtercharacterchoice overwhich the release takes place. Thus it causes the operation of thefunctions 1740 through 1746 which have just been described. If the dragis released other than on a choice in the filtercharacterchoice window,function 1750 closes the filter choice window.

If a re-utterance is received other than by pressing of the Re-utterancebutton, as described above with regard to functions 1602 and 1610, suchas by pressing the Large Vocabulary button or the Name Vocabulary buttonduring correction mode, as described above with regard to functions1350, 1356 and 1414 and 1416 of FIGS. 13 and 14, respectively, function1752 of FIG. 17 causes functions 1754 and 1756 to be performed. Function1754 adds any such new utterance to the correction window's selection'sutterance list, and function 1756 calls the displayChoiceList routinefor the selection so as to perform re-recognition using the newutterance.

Turning now to FIGS. 31 through 41, we will provide an illustration ofhow the user interface which has just been described can be used todictate a sequence of text. In this particular sequence, the interfaceis illustrated as being in the one-at-a-time mode, which is a discreterecognition mode that causes a correction window with a choice list tobe displayed every time a discrete utterance is recognized.

In this, and other examples, showing user inputs and the resultingvisual outputs, it should be understood that a given user input in agiven state causes the performance of the one or more functions shown inthe pseudocode figures in association with that given input and thatgiven state.

In FIG. 31, numeral 3100 points to the screenshot of the PDA screenshowing the user tapping the Talk button 1102 to commence dictationstarting in a new linguistic context. As indicated by the highlightingof the Large Vocabulary button 1132, the SIP recognizer is in the largevocabulary mode. The sequence of separated dots on theContinuous/Discrete button 1134 indicates that the recognizer is in adiscrete recognition mode. It is assumed the SIP is in the Press AndClick To End Of Utterance Recognition duration mode described withregard to numerals 1810 to 1818 of FIG. 18. As a result, the click ofthe Talk button causes recognition to take place until the end of thenext utterance. Numeral 3102 represents an utterance by the user of theword “this”. Numeral 3104 points to an image of the screen of the PDAafter a response to this utterance by placing the recognized text 3106in the SIP text window 1104, outputting this text to the applicationwindow 1106, and by displaying a correction window 1200 which includesthe recognized word in the first choice window 1202 and a first choicelist 1208.

In the example of FIG. 31, the user taps the Capitalization button 1222as shown in the correction windo 3108. This causes the PDA screen tohave the appearance pointed to by numeral 3110 in which the currentfirst choice and the text output in the SIP buffer and the applicationwindow is changed to having initial capitalization.

In the example the user clicks the Continue button 1104 as pointed to bynumeral 3112 and then utters the word “is” as pointed to by numeral3114. In the example, it is assumed this utterance is mis-recognized asthe word “its” causing the PDA screen to have the appearance pointed toby numeral 3116, in which a new correction window 1200 is displayedhaving the mis-recognized word as its first choice 3118 and a new choicelist 1208 for that recognition 1208.

FIG. 32 represents a continuation of this example, in which the userclicks the choice word “is” 3200 in the image pointed to by numeral3202. This causes the PDA screen to have the appearance indicated by thenumeral 3204 in which the correction window has been removed, andcorrected text appears in both the SIP buffer window and the applicationwindow.

In the screenshot pointed to by numeral 3206 the user is shown tappingthe letter name vocabulary button 1130, which changes the currentrecognition mode to the letter name vocabulary as is indicated by thehighlighting of the button 1130. As is indicated above with regard tofunctions 1410 and 1412, the tapping of this button commences speechrecognition according to the current recognition duration mode. Thiscauses the system to recognize the subsequent utterance of the lettername “e” pointed to by numeral 3208

In order to emphasize the ability of the present interface to quicklycorrect recognition mistakes, the example assumes that the systemmis-recognizes this letter as the letter “p” 3211, as indicated by thecorrection window that is displayed in one-at-a-time mode in response tothe utterance 3208. As can be seen in the correction window pointed toby 3210, the correct letter “e” is, however, one of the choices shown inthe correction window. In the view of the correction window pointed toby numeral 3214, the user taps on the choice 3212, which causes the PDAscreen to have the appearance pointed to by numeral 3216 in which thecorrect letter is entered both in the SIP buffer and the applicationwindow.

FIG. 33 illustrates a continuation of this example, in which the usertaps on the Punctuation Vocabulary button 1124 as indicated in thescreenshot 3300. This changes the recognition vocabulary to thepunctuation vocabulary and starts utterance recognition, causing thesubsequent utterance of the word “period” pointed to by the numeral3300, to give rise to the correction window 3304, in which thepunctuation mark “.” is shown in the first choice window followed bythat punctuation mark's name to make it easier for the user torecognize.

Since, in the example, this is the correct recognition, the userconfirms it and starts recognition of a new utterance by pressing theletter name vocabulary button 1130, as shown in the screenshot 3306, andsaying the utterance 3308 of the letter “l.” This process of enteringletters followed by periods is repeated until the PDA screen has theappearance shown by numeral 3312. At this point it is assumed the userdrags across the text “e. l. v. i. s.”, as shown in the screenshot 3314,which causes that text to be selected and which causes the correctionwindow 1200 in the screenshot 3400 in the upper left-hand corner of FIG.34 to be displayed. Since it is assumed that the selected text string isnot in the current vocabulary, there are no alternate choices displayedin this choice list. In the view of the correction window pointed to by3402, the user taps the Word Form button 1220, which calls the word formlist routine described above with regard to FIG. 27. Since the selectedtext string includes spaces, it is treated as a multiple-word selectioncausing the portion of the routine shown in FIG. 27 illustrated byfunctions 2716 through 2728 to be performed. This includes a choice listsuch as that pointed to by 3404 including a choice 3406 in which thespaces have been removed from the correction window's selection. In theexample, the user taps the Edit button 1232 next to the choice 3406. Asindicated in the view of the correction window pointed to by numeral3410, this causes the choice 3406 to be selected as the first choice, asindicated in the view of the correction window pointed to by 3412. Theuser taps on the Capitalization button 1222 until the first choicebecomes all capitalized at which point the correction window has theappearance indicated in the screenshot 3414. At this point the userclicks on the Punctuation Vocabulary button 1124 as pointed to bynumeral 3416 and says the utterance “comma” 3418. In the example it isassumed that this utterance is correctly recognized causing a correctionwindow 1200 pointed to by the numeral 3420 to be displayed and theformer first choice “E.L.V.I.S.” to be outputted as text.

FIG. 35 is a continuation of this example. In it, it is assumed that theuser clicks the Large Vocabulary button as indicated by numeral 3500,and then says the utterance “the” 3502. This causes the correctionwindow 3504 to be displayed. The user responds by confirming thisrecognition by again pressing the large vocabulary button as indicatedby 3506 and saying the utterance “embedded” pointed to by 3508. In theexample, this causes the correction window 3510 to be displayed in whichthe utterance has been mis-recognized as the word “indebted” and inwhich the desired word is not shown on the first choice list. Startingat this point, as is indicated by the comment 3512, a plurality ofdifferent correction options will be illustrated.

FIG. 36 illustrates the correction option of scrolling through the firstand second choice list associated with the mis-recognition. In the viewof the correction window pointed to by 3604, the user taps the page downscroll button 3600 in the scroll bar 3602 of the correction window,causing the first choice list 3603 to be replaced by the first screenfulof the second choice list 3605 shown in the correction window 3606. Ascan be seen in this view, the slide bar 3608 of the correction windowhas moved down below a horizontal bar 3609, which defines the positionin the scroll bar associated with the end of the first choice list. Inthe example, the desired word is not in the portion of thealphabetically ordered second choice list shown in view 3606, and thusthe user presses the Page Down button of the scroll bar as indicated by3610. This causes the correction window to have the appearance shown inview 3612 in which a new screenful of alphabetically listed choices isshown. In the example, the desired word “embedded” is shown on thischoice list as is indicated by the 3616. In the example, the user clickson the choice button 3619 associated with this desired choice as shownin the view 3618. This causes the correction window to have theappearance shown at 3620 in which this choice is displayed in the firstchoice window. In the example, the user taps the Capitalized button aspointed to by numeral 3622, which causes this first choice to haveinitial capitalization as shown in the screenshot 3624.

Thus it can be seen that the SIP user interface provides a rapid way toallow a user to select from among a relatively large number ofrecognition choices. In the embodiment shown, the first choice list iscomposed of up to six choices, and the second choice list can include upto three additional screens of up to 18 additional choices. Since thechoices are arranged alphabetically and since all four screens can beviewed in less than a second, this enables the user to select from amongup to 24 choices very quickly.

FIG. 37 illustrates the method of filtering choices by dragging acrossan initial part of a choice, as has been described above with regard tofunctions 1664 through 1666 of FIG. 16. In the example of this figure,it is assumed that the first choice list includes a choice 3702 shown inthe view 3700, which includes the first six characters of the desiredword “embedded”. As is illustrated in the correction window 3704, theuser drags across these initial six letters and the system responds bydisplaying a new correction window limited to recognition candidatesthat start with an unambiguous filter corresponding to the sixcharacters, as is displayed in the screenshot 3706.

In this screenshot the desired word is the first choice and the firstsix unambiguously confirmed letters of the first choice are shownhighlighted as indicated by the box 3708, and the filter cursor 3710 isalso illustrated. Note that in the correction window of screen shot 3706the word that had been partially dragged across in correction window3704, “embedding”, is not shown as a choice even though it starts withthe newly selected filters string. This is because, as is shown atfunction 1508 of FIG. 15, the partially selected word “embedding” isadded to the notChoiceList, which cause it to be excluded from the listof recognition choices.

FIG. 38 illustrates the method of filtering choices by dragging acrosstwo choices in the choice list that has been described above with regardto functions 1706 through 1708 of FIG. 17. In the example shown incorrection window 3800, the desired choice, “embedded”, occursalphabetically between the two displayed choices 3802 and 3804. As shownin the view 3806, the user indicates that the desired word falls in thisrange of the alphabet by dragging across these two choices. This causesa new correction window to be displayed in which the possible choicesare limited to words which occur in the selected range of the alphabet,as indicated by the screenshot 3808. In this example, it is assumed thatthe desired word is selected as a first choice, in part, as a result ofthe filtering caused by the selection shown in 3806. In screenshot 3808the portion of the first choice which forms an initial portion of thetwo choices selected in the view 3806 is indicated as unambiguouslyconfirmed portion of the filter string 3810 and the filter cursor 3812is placed after that confirmed filter portion.

FIG. 39 illustrates a method in which alphabetic filtering is used inone-at-a-time mode to help select the desired word choice. In thisexample, the user presses the Filter button as indicated in view 3900.It is assumed that the default filter vocabulary is the letter namevocabulary. Pressing the Filter button starts speech recognition for thenext utterance and the user says the letter “e” as indicated by 3902.This causes the correction window 3904 to be shown in which it isassumed that the filter character has been mis-recognized as in “p.” Inthe embodiment shown, in one-at-a-time mode, alphabetic input also has achoice list displayed for its recognition. In this case, it is afiltercharacterchoice list window 3906 of the type described above withregard to the filtercharacterchoice subroutine of FIG. 30. In theexample, the user selects the desired filtering character, the letter“e,” as shown in view 3908, which causes a new correction window 3900 tobe displayed. In the example, the user decides to enter an additionalfiltering letter by again pressing the Filter button as shown in theview 3912, and then says the utterance “m” 3914. This causes thecorrection window 3916 to be displayed, which displays thefiltercharacterchoice window 3918. In this correction window, thefiltering character has been correctly recognized and the user couldeither confirm it by speaking an additional filtering character or byselecting the correct letter, “m”, shown in the filter-character-choicewindow 3918. Either confirmation of the desired filtering charactercauses a new correction window to be displayed with the filter string3922, “em”, treated as an unambiguously confirmed filter's string. Inthe example shown in screenshot 3920, this causes the desired word to berecognized.

FIG. 40 illustrates a method of alphabetic filtering with AlphaBravo, orICA word, alphabetic spelling. In the screenshot 4000, the user taps onthe AlphaBravo button 1128. This changes the alphabet to the ICA wordalphabet, as described above by functions 1402 through 1408 of FIG. 14.In this example, it is assumed that the Display_Alpha_On_Double_Clickvariable has not been set. Thus the function 1406 of FIG. 14 willdisplay the list of ICA words 4002 shown in the screenshot 4004 duringthe press of the AlphaBravo button 1128. In the example, the user entersthe ICA word “echo,” which represents the letter “e” followed by asecond pressing of the AlphaBravo key as shown at 4008 and the utteranceof a second ICA word “Mike” which represents the letter “m”. In theexample, the inputting of these two alphabetic filtering characterssuccessfully creates an unambiguous filter string composed of thedesired letters “em” and produces recognition of the desired word,“embedded”.

FIG. 41 illustrates a method in which the user selects part of a choiceas a filter and then uses AlphaBravo spelling to complete the selectionof a word which is not in the system's vocabulary, in this case themade-up word “embeddedest”.

In this example, the user is presented with the correction window 4100which includes one choice 4102, which includes the first six letters ofthe desired word. As shown in the correction window 4104, the user dragsacross these first six letters causing those letters to be unambiguouslyconfirmed characters of the current filter string 4107, as shown incorrection window 4106. The screenshot 4108 shows the display of thiscorrection window in which the user drags from the filter button 1218and releases on the Discrete/Continuous button 1134, changing it fromthe discrete-filter dictation mode to the continuous-filter dictationmode, as is indicated by the continuous line on that button shown in thescreenshot 4108. In screenshot 4110, the user presses the alpha buttonagain and says an utterance containing the following ICA words “Echo,Delta, Echo, Sierra, Tango”. This causes the current filter string tocorrespond to the spelling of the desired word. Since there are no wordsin the vocabulary matching this filter string, the filter string itselfbecomes the first choice as is shown in the correction window 4114. Inthe view of this window shown at 4116, the user taps on the check buttonto indicate selection of the first choice, causing the PDA screen tohave the appearance shown at 4108.

FIGS. 42 through 44 demonstrate the dictation, recognition, andcorrection of continuous speech. In the screenshot 4200 the user clicksthe Clear button 1112 described above with regard to functions 1310through 1314 of FIG. 13. This causes the text in the SIP buffer 1104 tobe cleared without causing any associated change with the correspondingtext in the application window 1106, as is indicated by the screenshot4204. In the screenshot 4204 the user clicks the Continuous/Discretebutton 1134, which causes it to change from discrete recognitionindicated on the button by a sequence of dots in the screenshot 4200 toa continuous line shown in screenshot 4204. This starts speechrecognition according to the current recognition duration mode, and theuser says a continuous utterance of the following words “largevocabulary interface system from voice signal technologies period”, asindicated by numeral 4206. The system responds by recognizing thisutterance and placing a recognized text in the SIP buffer 1104 andthrough the operating system to the application window 1106, as shown inthe screenshot 4208. Because the recognized text is slightly more thanfits within the SIP window at one time, the user scrolls in the SIPwindow as shown at numeral 4210 and then taps on the word “vocabularies”4214, to cause functions 1436 through 1438 of FIG. 14 to select thatword and generate a correction window for it. In response the correctionwindow 4216 is displayed. In the example the desired word “vocabulary”4218 is on the choice list of this correction window and in the view ofthe correction window 4220 the user taps on this word to cause it to beselected, which will replace the word “vocabularies” in both the SIPbuffer in the application window with that selected word.

Continuing now in FIG. 43, this correction is shown by the screenshot4300. In the example, the user selects the four mistaken words “enterfaces men rum” by dragging across them as indicated in view 4302. Thiscauses functions 1502 and 1504 to display a choice window with thedragged words as the selection, as is indicated by the view 4304.

FIG. 44 illustrates how the correction window shown at the bottom ofFIG. 43 can be corrected by a combination of horizontal and verticalscrolling of the correction window and choices that are displayed in it.Numeral 4400 points to a view of the same correction window shown at4304 in FIG. 43. In it not only is a vertical scroll bar 3602 displayed,but also a horizontal scroll bar 4402. The user is shown tapping thepage down button 3600 in the vertical scroll bar, which causes theportion of the choice list displayed to move from the display of theone-page alphabetically ordered first choice list shown in the view 4400to the first page of the second alphabetically ordered choice list shownin the view 4404. In the example none of the recognition candidates inthis portion of the second choice list start with a character sequencematching the desired recognition output, which is “interface systemfrom.” Thus the user again taps the page down scroll button 3600 as isindicated by numeral 4408. This causes the correction window to have theappearance shown at 4410 in which two of the displayed choices 4412start with a character sequence matching the desired recognition output.In order to see if the endings of these recognition candidates matchedthe desired output, the user scrolls the horizontal scroll bar 4402 asshown in view 4414. This allows the user to see that the choice 4418matches the desired output. As is shown at is 4420, the user taps onthis choice and causes it to be inserted into the dictated text both inthe SIP window 1104 and in the application window 1106 as is shown inthe screenshot 4422.

FIG. 45 illustrates how the use of an ambiguous filter created by therecognition of continuously spoken letter names and edited byfiltercharacterchoice windows can be used to rapidly correct anerroneous dictation. In this example, the user presses the talk button1102 as shown at 4500 and then utters the word “trouble” as indicated at4502. In the example it is assumed that this utterance ismiss-recognized as the word “treble” as indicated at 4504. In theexample, the user taps on the word “treble” as indicated 4506, whichcauses the correction window shown at 4508 to be shown. Since thedesired word is not shown as any of the choices, the user taps thefilter button 1218 as shown at 4510 and makes a continuous utterance4512 containing the names of each of the letters in the desired word“trouble.” In this example it is assumed that the filter recognitionmode is set to include continuous letter name recognition.

In the example the system responds to recognition of the utterance 4512by displaying the correction window 4518. In this example it is assumedthat the result of the recognition of this utterance is to cause afilter string to be created that is comprised of one ambiguous lengthelement. As has been described above with regard to functions 2644through 2652 of FIG. 26, an ambiguous length filter element allows anyrecognition candidate that contains in the corresponding portion of itscharacter sequence one of the character sequences represented by thatambiguous length element. In the correction window 4518 the portion ofthe first choice word 4519 that corresponds to an ambiguous filterelement is indicated by the ambiguous filter indicator 4520. Since thefilter uses an ambiguous element, the choice list displayed containsbest scoring recognition candidates that start with different initialcharacter sequences including ones with length less than the portion ofthe first choice that corresponds to a matching character sequencerepresented by the ambiguous element.

In the example, the user drags upward from the first character of thefirst choice, which causes operation of functions 1747 through 1750described above with regard to FIG. 17. This causes a filter choicewindow 4526 to be display. As shown in the correction window 4524, theuser drags up to the initial desired character the letter “t,” andreleases the drag at that location which causes functions 1749 and 1740through 1746 to be performed. These close the filter choice window, callthe filterEdit routine of FIG. 28 with the selected character as anunambiguous correction to the prior ambiguous filter element and causesa new correction window to be displayed with the new filter as isindicated at 4528. As is shown in this correction window the firstchoice 4530 is shown with an unambiguous filter indicator 4532 for itsfirst letter “t” and an ambiguous filter indicator 4534 for itsremaining characters. Next, as is shown in the view of the samecorrection window shown at 4536 the user drags upward from the fifthletter “p” of the new first choice which causes a new correction window4538 to be displayed. When the user releases this drag on the character“b”, it causes that character and all the characters that preceded thecharacter it replaces in the first choice to be defined unambiguously inthe current filter string, as indicated in the new correction window4540, in which the first choice 4542 is the desired word, and theunambiguous portion of the filter is indicated by the unambiguous filterindicator 4544 and the remaining portion of the ambiguous filterelement, which stays in the filter string by operations of functions2900 through 2910 shown in FIG. 29.

FIG. 46 illustrates that the SIP recognizer allows the user to alsoinput text and filtering information by use of a character recognizersimilar to the character recognizer that comes standard with thatWindows CE operating system.

As shown in the screenshot 4600 of this figure, if the user drags upfrom the function key functions 1428 and 1430 of FIG. 14 will display amenu 4602 and if the user releases on the menu's character recognitionentry 4604 the character recognition mode described in FIG. 47 will beturned on.

As shown in FIG. 47, this causes function 4702 to display asingle-stroke character recognition window 4608, shown in screen 4606FIG. 46, and then to enter an input loop 4704 which is repeated untilthe user selects to exit the window by selecting another input option onthe function menu 4602. When in this loop, if the user touches thecharacter recognition window, function 4906 records “ink” during thecontinuation of such a touch which records the motion if any of thetouch across the surface of the portion of the display touch screencorresponding to the character recognition window. If the user releasesa touch in this window, functions 4708 through 4714 are performed.Function 4710 performance character recognition on the “ink” currentlyin the window. Function 4712 clears the character recognition window, asindicated by view 4610 in FIG. 46. And function 4708 supplies thecorresponding recognized character to the SIP buffer and the operatingsystem.

FIG. 48 illustrates that if the user selects the handwriting recognitionoption 4612 in the function menu shown in the screenshot 4600, ahandwriting recognition entry window 4800 will be displayed inassociation with the SIP as is shown in screenshot 4802.

The operation of the handwriting mode is provided in FIG. 49. When thismode is entered function 4902 displays the handwriting recognitionwindow shown in FIG. 48, and then a loop 4903 is entered until the userselects to use another input option. In this loop, if the user touchesthe handwriting recognition window in any place other then the deletebutton 4804 shown in FIG. 48, the motion if any during the touch isrecorded as “ink” by function 4904. If the user touches down in the“REC” button area 4806 shown in FIG. 48 function 4905 causes functions4906 through 4910 to be performed. Function 4906 performs handwritingrecognition on any “ink” previously entered in the handwritingrecognition window. Function 4908 supplies the recognized output to theSIP buffer and the operating system, and function 4910 clears therecognition window. If the user presses the Delete button 4804 shown inFIG. 48 functions 4912 and 4914 clear the recognition window of any“ink.”

It should be appreciated that the use of the recognition button 4806allows the user to both instruct the system to recognize the “ink” thatwas previously in the handwriting recognition entry window and, at thesame time, start the writing of a new word to be recognized.

FIG. 50 shows the keypad 5000, which can be selected from the functionmenu 4602 by picking the option 4615 shown in FIG. 46.

Having character recognition, handwriting recognition, and keyboardinput methods rapidly available as part of the speech recognition SIP isoften extremely advantageous because it lets the user switch back andforth between these different modes in a fraction of a second dependingupon which is most convenient at the current time. And it allows theoutputs of all of these modes to be used in editing text in the SIPbuffer.

As shown in FIG. 51, in one embodiment of the SIP buffer, if the userdrags up from the filter button 1218 a window 5100 is display thatprovides the user with optional filter entry mode options. These includeoptions of using a letter-name speech recognition, AlphaBravo speechrecognition, character recognition, handwriting recognition, and thekeyboard window, as alternative methods of entering filtering spellings.It also enables a user to select whether any of the speech recognitionmodes are discrete or continuous and whether the letter name recognitioncharacter recognition and handwriting recognition entries are to betreated as ambiguous in the filter string. This user interface enablesthe user to quickly select the filter entry mode which is appropriatefor the current time and place. For example, in a quiet location whereone does not have to worry about offending people by speaking,continuous letter name recognition is often very useful. However, in alocation where there's a lot of noise, but a user feels that speechwould not be offensive to neighbors, AlphaBravo recognition might bemore appropriate. In a location such as a library where speaking mightbe offensive to others silent filter entry methods such as characterrecognition, handwriting recognition or keyboard input might be moreappropriate.

FIG. 52 provides an example of how character recognition can be quicklyselected to filter a recognition. View 5200 shows a portion of acorrection window in which the user has pressed the filter button anddragged up, causing the filter entry mode menu 5100 shown in FIG. 51 tobe displayed, and then selected the character recognition option. As isshown in screenshot 5202 this causes the character recognition entrywindow 4608 to be displayed in a location that allows the user to seethe entire correction window. In the screenshot 5202 the user has drawnthe character “e” and when he releases his stylus from the drawing ofthat character the letter “e” will be entered into the filter stringcausing a correction window 5204 to be displayed in the example. Theuser then enters an additional character “m” into the characterrecognition window as indicated at 5206, and when he releases his stylusfrom the drawing of this letter the recognition of the character “em”causes the filter string to include “e” as shown by the ambiguous filterstring indicator 5210 in view 5208.

FIG. 53 starts with a partial screenshot 5300 where the user has tappedand dragged up from the filter key 1218 to cause the display of thefilter entry mode menu, and has selected the handwriting option. Thisdisplays a screen such as 5302 with a handwriting entry window 4800displayed at a location that does not block a view of the correctionwindow. In the screenshot 5302 the user has handwritten in a continuouscursive script the letters “embed” and then presses the “REC” button tocause recognition of those characters. Once he has tapped that button anambiguous filter string indicated by the ambiguous filter indicator 5304is displayed in the first choice window corresponding to the recognizedcharacters as shown by the correction window 5306. FIG. 54 shows how theuser can use a keypad window 5000 to enter alphabetic filteringinformation.

FIG. 55 illustrates how speech recognition can be used to collecthandwriting recognition. Screenshot 5500 shows a handwriting entrywindow 4800 displayed in a position for entering text into the SIPbuffer window 1104. In this screenshot the user has just finishedwriting a word. Numerals 5502 through 5510 indicate the handwriting offive additional words. The word in each of these views is started by atouchdown in the “REC” button so as to cause recognition of the priorwritten word. Numeral 5512 points to a handwriting recognition windowwhere the user makes a final tap on the “REC” button to causerecognition of the last handwritten word “speech”. In the example ofFIG. 55, after this sequence of handwriting input has been recognized,the SIP buffer window 1104 in the application window 1106 had theappearance shown in the screenshot 5514 as indicated by 5516. The userdrags across the miss-recognized words “snack shower.” This causes thecorrection window 5518 to be shown. In the example, the user taps there-utterance button 1216 and discretely re-utters the desired words“much . . . slower.” By operation of a slightly modified version of the“get” choices function described above with regard to FIG. 23 this willcause the recognition scores from recognizing the utterances 5520 to becombined with the recognition results from the handwritten inputspointed to by numerals 5504 and 5506 to select a best scoringrecognition candidate, which in the case of the example is the desiredwords, as shown at numerals 5522.

It should also be appreciated that the user could have pressed the “new”button 1214 in the correction window 5518 instead of the ReUtt button1218, in which case the output of speech recognition of the utterances5520 would replace the handwriting outputs that had been selected asshown at 5516.

As indicated in FIG. 56, if the user had pressed the filter button 1218instead of the re-utterance button in the correction window 5518, theuser could have used the speech recognition of letter names, such as inthe utterance 5600 shown in FIG. 56, to alphabetically filter thehandwriting recognition of the two words selected at 5516 in FIG. 55.

FIG. 57 illustrates an alternate embodiment 5700 of the SIP speechrecognition interface in which there are two separate top-level buttons5702 and 5704 to select between discrete and continuous speechrecognition, respectively. It will be appreciated that it is a matter ofdesign choice which buttons are provided at the top level of a speechrecognizes user interface. However, the ability to rapidly switchbetween the more rapid and more natural continuous speech recognitionversus the more reliable although more halting and slow discrete speechrecognition is something that can be very desirable, and in someembodiments justifies the allocation of a separate top-level key for theselection of discrete and for the selection of continuous recognition.

FIG. 58 displays an alternate embodiment of the displayChoiceListroutine shown in FIG. 22. It is similar to the routine of FIG. 22 exceptthat it creates a single scrollable score ordered choice list ratherthan the two alphabetically ordered choice lists created by the routinein FIG. 22. The only portions of its language that differs from thelanguage contained in FIG. 22 are underlined, with the exception thatfunctions 2226 and 2228 have also been deleted in the version of theroutine shown in FIG. 58.

FIG. 59 illustrates one possible embodiment of a cellphone whichcontains a large vocabulary speech recognition capability according tocertain aspects of the present invention. It includes a set of phonekeys 5902, which includes a basic numbered phone keypad 5904 and a setof additional keys 5906 which are common in many of today's cellphones.These extra keys include the navigational keys 5908 which can actuallybe formed of one unit which can be tilted either up or down or left orright to enable a user to provide a discrete Up, Down, Left, or Rightinput. The cellphone also includes a display screen 5910, a speaker5912, and a microphone 5914, which is located the bottom of the phone ina position that is not shown in FIG. 59.

FIG. 60 provides a description of the basic components found in manycellphones.

FIG. 61 includes a description of some of the programming and datastructures contained on the mass storage device of the cellphone. Likethe mass storage device described above with regard to FIG. 10, thismass storage device can be flash ROM, but could in some embodimentsinclude other mass storage devices such as magnetic memories. Theprograms and data structures stored on the cellphone's mass storagedevice are somewhat similar to those stored in the PDA's mass storageshown in FIG. 10, and the similar elements are indicated by similarnumbering. The mass storage device shown in FIG. 61 also includescellphone programming 6102, which includes programming for dialing andanswering calls and performing other phone functions. It is also shownhaving audio compression programming 6104, which is used by thecellphone programming to compress audio signals so they can beefficiently communicated by wireless cellphone transmission. In someembodiments of the invention some portions of this audio compressionprogramming are also used to compress audio used by audiorecord-and-playback programming 6106. In many embodiments of the presentinvention the cellphone's mass storage also stores text-to-speechprogramming 6108 for tasks such as providing acknowledgement of therecognition of commands and feedback on speech recognition.

FIG. 62 illustrates that the cellphone of FIG. 59 allows traditionalphone dialing by the pressing of numbered phone keys.

FIG. 63 provides a quick description of the cellphone's top-level mode,“phone mode”.

As shown in this figure, if the user presses the Left navigation buttonon the rocker 5908 in FIG. 59, function 6302 calls a digit dial program,which allows the user to dial phone number by continuous digitrecognition.

If the user presses the Right navigation button on the same rocker,function 6304 calls the name dial program, which allows the user to diala phone number by saying the name of a person in his contact listassociated with that number.

If the user presses the navigational up button on the rocker, function6306 calls a message program that allows the user to see his phone ande-mail messages.

If the user presses the down navigational button on the rocker switch,function 6308 opens up a speech recognition editor for a new item at theend of a textual outline of notes, enabling the user to quickly dictateinto text ideas on any subject, which can then later be moved to otherlocations in the outline or into other text files.

This use of navigational keys provides the user with rapid access to theimportant speech recognition functions of digit dial, named dial, andnote taking from the telephone's top-level mode.

If the user presses the “Menu” button shown in FIG. 59, function 6312calls a displayMenu routine for the main menu of the phone. This routinedisplays the menu for which it is called, in this case, the main menu.If the user double-click's on the menu button, functions 6316 throughthe 6320 are performed. These functions call the displayMenu functionfor the main menu, set the recognition vocabulary to the main menu'scommand vocabulary, and treat the last press of the menu key as a speechkey for recognition duration purposes of the type described above withregard to FIG. 18.

If the user makes a single press of the Menu key for longer than acertain duration, function 6324 calls the help routine for the mainmenu. The help routine displays a text which describes the mode or menufor which it is called including all the commands which are available inthat mode.

These multiple uses of the Menu Key—i.e., the ability of differentpresses of the Menu key to either display the menu, display the menu andturn on command recognition of the menu's commands, or to evoke help forthe current mode or menu—are available across virtually all modes of theparticular embodiment of the cellphone that is described in detail inthis application.

FIG. 63 shows that when the cellphone is in phone mode its response to apressing of the “Talk” and “End” buttons and keys on the standard phonepad are similar to that found in many prior cellphones.

FIG. 64 illustrates at 6400 the appearance of the cellphone's displayscreen when at the top-level phone mode, such as before dialing hascommenced. The notation indicated by numeral 6402 at the bottom of thisdisplay indicates to the user the functions associated with thenavigational keys by the functions 6302 through 6308 of FIG. 63,discussed above. If the user either presses or double-clicks the Menubutton, as shown at 6404, the main menu will be displayed, as describedabove with regard to functions 6312 and 6316. Once in this menu, theuser can display an entire page at a time by pressing either the Left orRight navigational buttons, as is indicated in FIG. 64. If the userpresses the Up or Down navigational buttons the current selection 6406will be scrolled up or down one item at a time. The notation“<P{circumflex over ( )}I” in the title bar of the menu displayindicates that the navigational mode moves a page with presses of theLeft/Right navigational buttons, and an item at a time with presses ofthe Up and Down buttons.

FIGS. 65 and 66 provide a more detailed description of the functionalitythat results when a call is made to displayMenu for the main menu, suchas by the function 6318 of the top-level phone mode described in FIG.63.

When the displayMenu routine is called for a given menu, it displays thefirst screen of the given menu and then responds to commands associatedwith that menu. When displayMenu is called for the main menu, function6502 displays the first screen of the main menu starting with the menuitem numbered “1” in the cellphone screen shot 6408 shown in FIG. 64.

If the user presses the Left or Right navigational key or says “PageLeft” or “Page Right,” function 6508 scrolls the menu choice list up ordown one screen, highlighting the first item in each new screen asindicated in FIG. 64.

If the user presses the Up or Down navigational button or says “Item Up”or “Item Down,” function 6512 scrolls the highlight 6406 shown in FIG.64 up or down by one item, scrolling the display, if necessary, to shownewly highlighted items on the screen.

If the user presses the OK key or says “OK,” function 6516 selects thecurrently highlighted choice in the menu, if any, and performs afunction associated with that choice.

If the user presses the Menu key while already in the menu mode and thepress is not part of a double-click, functions 6520 and 6522 return fromall currently called menus. Since menus can be hierarchical this has theeffect of returning to the last non-menu mode from which a sequence ofone or more displayMenu calls originated. As is described below,pressing the “*” or escape key causes a returns from a current menu callthat will return to any menu from which a current, lower-level menu hasbeen called.

If the user double-click's the Menu key when the main menu is displayed,function 6526 and 6528 set the recognition vocabulary to the commands inthe displayed menu, i.e., the main menu in FIG. 65, and treats the lastMenu key press of the double-click as a speech key press for recognitionduration logic purposes. This allows the user to be able to always turnon command recognition by double-clicking the menu key.

If the user makes a sustained press of the Menu button, function 6532calls the help routine for the currently displayed menu.

If the user presses the Talk button, the response is the same asdouble-clicking on the menu button.

If the user presses the End button, function 6542 saves the currentstate the cellphone is in for a possible return to that state in thefuture, and function 6544 goes to the phone mode.

All of the above items just described with regard to FIG. 65 are shownin bold text in that figure to indicate that they are user interfacefeatures which are available in all menus of the particular cellphoneinterface that is described in detail.

In the main menu and all the menus and command structures describedbelow, if a number or key name precedes the name of an option, the useris able to select such an option by (a) pressing the numbered or namedkey; (b) if command recognition is on, by saying the name of the option;or (c) if in a menu or command list by selecting the option by movingthe menu or command list highlight to a displayed command and thenselecting it, either by pressing the OK key or, if command recognitionis on, by saying “OK”.

If any of these methods are used to select “Name Dial” when in the mainmenu, function 6548 calls the Name Dial program described above briefly.

If the user selects “Digit Dial”, function 6552 calls the Digit Dialprogram.

If the user selects “Speed Dial”, function 6556 calls the Speed Dialfunction.

As shown in FIG. 66, if the user selects “Voice Messages”, function 6604calls a program that allows a user to see a listing of, listen to,annotate, and/or copy selected portions of such voice messages intoother documents on the cellphone system.

If the user selects “Email”, function 6608 calls an Email function,which allows a user to originate, send, and receive e-mails, includingthe use of voice recognition to address e-mails and/or to create text innew e-mails or as comments on replies to e-mails sent by others.

In FIG. 66 the Email option is preceded by “44”. A double-digit such asthis indicates a double-click. The menu structure of the cellphoneembodiment shown uses double-clicks liberally to increase the number offunctions available to a user at one time through the relatively smallnumber of keys found on most cellphones.

If the user selects “Editor”, function 6612 calls editor mode with a newfile. As will be described below in greater detail editor mode is themajor speech recognition and phone key text entry mode of the disclosedcellphone embodiment.

If the user selects “Note Outline”, function 6616 calls editor mode fornew item at the bottom of a note outline. This is the same functionwhich is called pressing a Down key when in the top-level phone mode.The note outlined is a hierarchical document structure which enables asequence of notes to be viewed as if they were part of one document whendesired. It allows various levels of the outline to be expanded andcollapsed so as to enable more rapid navigation and reading of theoutline's major headings. It is good for enabling a user to keep achronological list of notes. It also is good for grouping certain typesof information together such as to-do list information, and informationconcerning people of interest or subjects of interest.

If the user selects “Contacts”, function 6620 calls a contact programwhich contains name, address, phone number, e-mail, and otherinformation about each of a plurality of people.

If the user selects “Schedule”, function 6624 calls the schedule programthat allows the user to view, enter, and edit by voice recognitioninformation relating to scheduling.

If the user selects “Web browser”, function 6628 calls a Web browserprogram in which the user can enter values into text fields by speechrecognition.

If the user selects “Call History”, function 6632 calls a call historyprogram that allows a user to see time, length, and phone number or nameinformation about past calls it been made on the cellphone.

If the user selects “Files”, function 6636 calls a file manager programthat enables a user to navigate, open, delete, and create text and othertypes of stored files on the cellphone.

If the user selects “Escape”, the call to displayMenu that is displayingthe current menu will return. This “escape” option is shown in boldbecause it is available in all menus. If the currently displayed menu isbeing displayed in response to a call to displayMenu made by theselection of a command in a higher level menu, selecting “escape” willreturn to that higher level menu.

As mentioned above, the current interface provides two options forreturning from a menu. The first is pressing “Menu”, which returns tothe top-level phone mode from all currently called menus, and “Escape”,which returns just from the currently displayed menus. This allows theuser greater flexibility when using and navigating the cellphone'shierarchical menu structure.

If the user selects “Task List”, function 6644 causes the execution togo to a Task List Manager which enables a user to select between all ofthe currently available tasks, in much the way that a task manager doeson many current personal computers. This is an extremely desirablefeature on a cellphone in which a user is given the capability toperform significant tasks through speech recognition. This is becausehaving such multitasking on a cellphone allows one to answer a phonewhile in the middle of the relatively complex task such as composing amulti-line e-mail, without losing work on that task.

Note that the Escape and Task List options are shown in bold becausethey are available in all of the cellphones menus.

If the user selects “Main Options Menu”, function 6648 will calldisplayMenu for the Main Option Menu, which contains phone options thatare less commonly used than those that selectable from the Main Menuitself.

FIG. 67 through 74 displayed various mapping of a basic phone numberkeypad to functions used in various modes or menus of the disclosedcellphone speech recognition editor.

The phone key mapping in the editor mode is shown in FIG. 67.

FIG. 68 shows the phone key portion of the entry mode menu which isselected if the user presses the one key when in the editor mode. Theentry mode menu is used to select among various text and alphabeticentry modes available on the system.

FIG. 69 displays the functions that are available on the numerical phonekey pad when the user has a correction window displayed, which can becaused from the editor mode by pressing the “2” key.

FIG. 70 displays the numerical phone key commands available from an editmenu selected by pressing the “3” key when in the edit mode illustratedin FIG. 67. This menu is used to change the navigational functionsperformed by pressing the navigation keys of the phone keypad.

FIG. 71 illustrates a somewhat similar correction navigation menu thatdisplays navigational options available in the correction window bypressing the “3” key when the correction window is displayed. Inaddition to changing navigational modes while in a correction window,the menu of FIG. 71 also allows the user to vary the function that isperformed when a choice is selected.

FIG. 72 illustrates the numerical phone key mapping during a key Alphamode, in which the pressing of a phone key having letters associatedwith it will cause a prompt to be shown on the cellphone display askingthe user to say the ICA word associated with the desired one of the setsof letters associated with the pressed key. This mode is selected bydouble-clicking the “3” phone key when in the entry mode menu shown inFIG. 68.

FIG. 73 shows a basic keys menu, which allows the user to rapidly selectfrom among a set of the most common punctuation and function keys usedin text editing, or by pressing the “1” key to see a menu that allows aselection of less commonly used punctuation marks. The basic keys menuis selected by pressing a “9” in the editor mode illustrated in FIG. 67.

FIG. 74 illustrates the edit option menu that is selected by pressing“0” in the editor mode, the menu of which is shown in FIG. 67. Thiscontains a menu which allows a user to perform basic tasks associatedwith use of the editor that are not available in the other modes ormenus.

At the top of each of the numerical phone key mappings shown in FIGS. 67through 74 is a title bar that is shown at the top of the cellphonedisplay when that menu or command list is shown. As can be seen fromthese figures the title bars illustrated in FIGS. 67, 69 and 72 startwith the letters “Cmds” to indicate that the displayed options are partof a command list, whereas FIGS. 68, 70, 71, 73 and 74 have title barswhich start with “MENU.” This is used to indicate a distinction betweenthe command lists shown in FIGS. 67, 69 and 72 and the menus shown inthe others of these figures.

A command list displays commands that are available in a correspondingmode even when that command list is not displayed. The commandsassociated with a menu, on the other hand, are normally only availablewhen the menu is being displayed. For Example, when in the editor modeassociated with the command list of FIG. 67 or the key Alpha modeassociated with FIG. 72, normally the text editor window will bedisplayed even though the phone keys have the functional mappings shownin those figures. Normally when in the correction window mode associatedwith the command list shown in FIG. 69, a correction window is shown onthe cellphones display.

In all these modes, the user can access the command list to see thecurrent phone key mapping, as illustrated in FIG. 75, by merely pressingthe menu key, as indicated by the numerals 7500 in that figure. In theexample of FIG. 75, a display screen 7502 shows a window of the editormode before the pressing of the Menu button. When the user presses theMenu button, the first page of the editor command list is shone, asindicated by 7504, the user then has the option of scrolling up or downin the command list to see not only the commands that are mapped to thenumerical phone keys but also the commands mapped to the “Menu”, “Talk”and “End” key, as shown in screen 7506, as well as the navigational keybuttons, “OK”, and “Menu” buttons, as shown in screen 7508 As shown inscreen 7510, if there are additional options associated with the currentmode at the time the command list is entered, they can also be selectedfrom the command list by means of scrolling the highlight 7512 and usingthe “OK” key. In the example shown in FIG. 75 a phone call indicator7514 having the general shape of a telephone handset is indicated at theleft of each title bar to indicate to the user that the cellphone iscurrently in a telephone call. In this case extra functions areavailable in the editor that allow the user to quickly select to mutethe microphone of the cell found, to record only audio from the userside of the phone conversation and to play the playback only to the userside of the phone conversation.

FIGS. 76 through 78 provide a more detailed pseudocode description ofthe functions of the editor mode than is shown by the command listingsshown in FIGS. 67 and 75. This pseudocode is represented as one inputloop 7602 in which the editor responds to various user inputs.

If the user inputs one of the navigational commands indicated by numeral7603, by either pressing one of the navigational keys or speaking acorresponding navigational command, the functions 7604 through 7627shown indented under that command in FIG. 76 are performed.

Function 7604 tests to see if the editor is currently in word/linenavigational mode. This is the most common mode of navigation in theeditor, and it can be quickly selected by pressing the “3” key twicefrom the editor. The first press selects the navigational mode menushown in FIG. 70 and the second press selects the word/line navigationalmode from that menu. If the editor is in word-line mode function 7606through 7624 are performed.

If the navigational input is a Word-Left or Word-Right command, function7606 causes function 7608 through 7617 to be performed. Functions 7608and 7610 test to see if extended selection is on, and if so, they movethe cursor one word to the left or right, respectively, and extend theprevious selection to that word. If extended selection is not on,function 7612 causes functions 7614 to 7617 to be performed. Functions7614 and 7615 test to see if either the prior input was a WordLeft/Right command of a different direction than the current command orif the current command would put the cursor before or after the end oftext. If either of these conditions is true, the cursor is placed to theleft or right out of the previously selected word, and that previouslyselected word is unselected. If the conditions in the test of function7614 are not met then function 7617 will move the cursor one word to theleft or the right out of its current position and make the word that hasbeen moved to the current selection.

The operation of function 7612 through 7617 enable Word Left and WordRight navigation to allow a user to not only move the cursor by a wordbut also to select the current word at each move if so desired. It alsoenables the user to rapidly switch between a cursor that corresponds toa selected word and a cursor that represents an insertion point beforeor after a previously selected word.

If the user input has been a line up or a line down command, function7620 moves the cursor to the nearest word on the line up or down fromthe current cursor position, and if extended selection is on, function7624 extends the current selection through that new current word.

As indicated by the line 7626, the editor also includes programming forresponding to navigational inputs when the editor is in other navigationmodes that can be selected from the edit navigation menu shown in FIG.70.

If the user selects “OK” either by pressing the button or using voicecommand, function 7630 tests to see if the editor has been called toenter text into another program, such as to enter text into a field of aWeb document or a dialog box, and if so function 7632 enters the currentcontext of the editor into that other program at the current text entrylocation in that program and returns. If the test 7630 is not met,function 7634 exits the editor saving its current content and state forpossible later use.

If the user presses the Menu key when in the editor, function 7638 callsthe displayMenu routine for the editor commands which causes a commandlist to be displayed for the editor as has been described above withregard to FIG. 75. As has been described above, this allows the user toscroll through all the current command mappings for the editor modewithin a second or two. If the user double-clicks on the Menu key whenin the editor, functions 7642 through 7646 call displayMenu to show thecommand list for the editor, set the recognition vocabulary to theeditor's command vocabulary, and perform command speech recognitionusing the last press of the double-click to determine the duration ofthat recognition.

If the user makes a sustained press of the menu key, function 7650enters help mode for the editor. This will provide a quick explanationof the function of the editor mode and allow the user to explore theeditor's hierarchical command structure by pressing its keys and havinga brief explanation produced for the portion of that hierarchicalcommand structure reached as a result of each such key pressed.

If the user presses the Talk button when in the editor, function 7654turns on recognition according to current recognition settings,including vocabulary and recognition duration mode. The talk button willoften be used as the major button used for initiating speech recognitionin the cellphone embodiment.

If the user selects the End button, function 7658 goes to the phonemode, so as to enable the user to quickly make or answer a phone call.It saves the current state of the editor so that the user can return toit when such a phone call is over.

A shown in FIG. 77, if the user selects the entry mode menu, illustratedin FIG. 68, while in edit mode, function 7702 causes that menu to bedisplayed. As will be described below in greater detail, this menuallows the user to quickly select between dictation modes somewhat asbuttons 1122 through 1134 shown in FIG. 11 did in the PDA embodiment. Inthe embodiment shown, the entry mode menu has been associated with the“1” key because of the “1” key's proximity to the talk key. This allowsthe user to quickly switch dictation modes and then continue dictationusing the talk button.

If the user selects “choice list,” functions 7706 and 7708 set thecorrection window navigational mode to be page/item navigational mode,which is best for scrolling through and selecting recognition candidatechoices. They then can call the correction window routine for thecurrent selection, which causes a correction window somewhat similar tothe correction window 1200 shown in FIG. 12 to be displayed on thescreen of the cellphone. If there currently is no selection, thecorrection window will be called with an empty selection. A correctionwindow starting with an initially empty selection can be used to selectone or more words using alphabetic input, word completion, and/or theaddition of one or more utterances. Once such one or more words areselected in such a correction window, they will be inserted into text atthe location of the originally empty cursor.

The correction window routine will be described in greater detail below.

If the user selects “filter choices” such as by double-clicking on the“2” key, function 7712 through 7716 set the correction windownavigational mode to the word/character mode used for navigating in afirst choice or filter string. They than call the correction windowroutine for the current selection and treat the second press of thedouble-click, if one has been entered, as the speech key for recognitionduration purposes.

In most cellphones, the “2” key is usually located directly below thenavigational key. This enables the user to navigate in the editor to adesired word or words that need correction and then single press thenearby “2” key to see a correction window with alternate choices for theselection, or to double-click on the “2” key and immediately startentering filtering information to help the recognizer selects a correctchoice.

If the user selects the navigational mode menu shown in FIG. 70,function 7720 causes it to be displayed. As will be described in moredetail below, this function enables the user to change the navigationthat is accomplished by pressing the Left and Right and the Up and-Downnavigational buttons. In order to make such changes more easy to make,the navigational button has been placed in the top row of the numberedphone keys, close to the navigation buttons.

If the user selects the discrete recognition input by pressing the “4”botton, function 7724 turns on discrete recognition according to thecurrent vocabulary using the press-And-Click-To-Utterance-End durationmode as the current recognition duration setting. This button isprovided to enable the user to quickly shift to discrete utterancerecognition whenever desired by the pressing of the “4” button. As hasbeen stated before, discrete recognition tends to be substantially moreaccurate than continuous recognition, although it is more halting. Thelocation of this commands key has been selected to be close to the talkbutton and the “1” key, which serves in the editor as the entry modemenu button. Because of the availability of the discrete recognitionkey, the recognition modes normally mapped to the Talk button will becontinuous. Such a setting allows the user to switch between continuousand discrete recognition by altering between pressing the Talk buttonand the “4” key.

If the user selects selections start or selections stop as by togglingthe “5” key, function 7728 toggles extended selection on and off,depending on whether that mode was currently on or off. Then function7730 tests to see whether extended selection has just been turned offand if so, function 7732 de-selects any prior selection other than one,if any, at the current cursor. In the embodiment described, the “5” keyis selected for the extended selection command because of its proximityto the navigational controls and the “2” key which is used for bringingup correction windows.

If the user chooses the select all command, such as by double-clickingon the “5” key, function 7736 selects all the text in the currentdocument.

If the user selects the “6” key or any of the associated commands whichare currently active (which can include play start, play stop, orrecords stop), function 7740 tests to see if the system is currently notrecording audio. If so, function 7742 toggles between an audio play modeand a mode in which audio play is off. If the cellphone is currently ona phone call and the play only to me option 7513 shown in FIG. 75 hasbeen set to the off mode, function 7746 sends audio from the play overthe phone line to the other side of the phone conversation as well as tothe speaker or headphone of the cellphone itself.

If, on the other hand the system is recording audio when the “6” buttonis pressed, function 7750 turns recording off.

If the user double-click on the “6” key or enters a record command,function 7754 turns audio recording on. Then function 7756 tests to seeif the system is currently on a phone call and if the Record-Only-Mesetting 7511 shown in FIG. 75 is in the off state. If so, function 7758records audio from the other side of the phone line as well as from thephone's microphone or microphone input jack.

If the user presses the “7” key or otherwise selects the capitalizedmenu command, function 7762 displays a capitalized menu that offers theuser the choice to select between modes that cause all subsequentlyentered text to be either in all lowercase, all initial caps, or allcapitalized. It also allows the user to select to change one or morewords currently selected, if any, to all lowercase, all initial caps, orall capitalized form.

If the user double-clicks on the “7” key or otherwise selects thecapitalized cycle key, the capitalized cycle routine which can be calledone or more times to change the current selection, if any, to allinitial caps, all capitalized, or all lowercase form.

It the user presses the “8” key or otherwise selects the word form list,function 7770 calls the word form list routine described above withregard to FIG. 27.

If the user double-click on the “8” key or selects the word typecommand, function 7774 displays the word type menu. The Word Type menuallows the user to select a word type limitations as described abovewith regard to the filter match routine of FIG. 26 upon a selected word.In the embodiment shown, this menu is a hierarchical menu having thegeneral form shown in FIGS. 91 and 92, which allows the user to specifyword ending types, word start types, word tense types, word part ofspeech types and other word types such as possessive or non-possessiveform, singular or plural nominative forms, singular or plural verbforms, spelled or not spelled forms and homonyms, if any exist.

As shown in FIG. 78, if the user presses the “9” key or selects the“Basic Key's Menu” command, function 7802 displays the basic key's menushown in FIG. 73, which allows the user to select the entry of one ofthe punctuation marks or input character that can be selected from thatmenu as text input.

If the user double-clicks on the “9” key or selects the “New Paragraph”Command, function 7806 enters a New Paragraph Character into theeditor's text.

If the user selects the “*” key or the “Escape” command, functions 7810to 7824 are performed. Function 7810 tests to see if the editor has beencalled to input or edit text in another program, in which case function7812 returns from the call to the editor with the edited text forinsertion to that program. If the editor has not been called for suchpurpose, function 7820 prompts the user with the choice of exiting theeditor, saving its contents and/or canceling escape. If the user selectsto escape, functions 7822 and 7824 escape to the top level of the phonemode described above with regard to FIG. 63. If the user double-clickson the “*” key or selects the “Task List” function, function 7828 goesto the task list, as such a double-click does in most of the cellphone'soperating modes and menus.

It the user presses the “0” key or selects the “Edit Options Menu”command, function 7832 calls the edited options menu described abovebriefly with regard to FIG. 74. If the user double-clicks on the “0” keyor selects the “Undo” command, function 7836 undoes the last command inthe editor, if any.

It the user presses the “#” key or selects the “Backspace” command,function 7840 tests to see if there's a current selection. If so,function 7842 deletes it. If there is no current selection and if thecurrent smallest navigational unit is a character, word, or outlineitem, functions 7846 and 7848 delete backward by that smallest currentnavigational unit.

FIGS. 79 and 80 illustrate the options provided by the Entry Mode menudiscussed above with regard to FIG. 68.

When in this menu, if the user presses the “1” key or otherwise selects“Large Vocabulary Recognition”, functions 7906 through 7914 areperformed. These set the recognition vocabulary to the large vocabulary.They treat the press of the “1” key as a speech key for recognitionduration purposes. They also test to see if a correction window isdisplayed. If so, they set the recognition mode to discrete recognition,based on the assumption that in a correction window, the user desiresthe more accurate discrete recognition. They add any new utterance orutterances received in this mode to the utterance list of the typedescribed above, and they call the displayChoiceList routine of FIG. 22to display a new correction window for any re-utterance received.

In the cellphone embodiment shown, the “1” key has been selected forlarge vocabulary in the entry mode menu because it is the most commonrecognition vocabulary and thus the user can easily select it byclicking the “1” key twice from the editor. The first click selects theentry mode menu and the second click selects the large vocabularyrecognition.

If the user presses the “2” key when in entry mode, the system will beset to unambiguous letter-name recognition of the type described above.If the user double-clicks on that key when the entry mode menu isdisplayed at a time when the user is in a correction window, function7926 sets the recognition vocabulary to the letter-name vocabulary andindicates that the output of that recognition is to be treated as anambiguous filter. In the preferred embodiment, the user has the abilityto indicate under the entry preference option associated with the “9”key of the menu, shown in FIG. 80, whether or not such filters are to betreated as ambiguous length filters or not. The default setting is tolet such recognition be treated as an ambiguous length filter incontinuous letter-name recognition, and a fixed length ambiguous filterin response to the discrete letter-name recognition.

If the user presses the “3” key, recognition is set to the AlphaBravomode. If the user double-clicks on the “3” key, recognition is set tothe “keyAlpha” mode as described above with regard to FIG. 72. This modeis similar to AlphaBravo mode except that pressing one of the numberkeys “2” through “9” will cause the user to be prompted to one of theICA words associated with the letters on the pressed key and recognitionwill favor recognition of one word from that limited set of ICA words,so as to provide very reliable alphabetic entry even under relativelyextreme noise conditions.

It the user presses the “4” key, the vocabulary is changed to the digitvocabulary.

If the user double-clicks on the “4” key, the system will respond to thesubsequent pressing of numbered phone keys by entering the correspondingnumbers into the editors text.

If the user presses the “5” key, the recognition vocabulary is limitedto a punctuation vocabulary.

If the user presses the “6” key, the recognition vocabulary is limitedto the contact name vocabulary described above.

If the user presses the 7 key, the system enters a non-ambiguous phonekey spelling mode in which it enables a user to input a sequence of oneor more alphabetic characters by pressing a given phone key one or moretimes for each desired character, with the number of times each key ispressed in quick succession being used to select which of the charactersassociated with that key is desired.

If the user double-clicks on the “7” key, the system enters ambiguouskey recognition in which each press of a phone key having a set ofletters associated with it causes entry of an ambiguous character, ofthe type described above in the filterMatch and filterEdit routines ofFIGS. 26 and 28, respectively, which represents any one of the pressedphone key's associated letters.

If the user selects the “8” key, the system toggles between continuousand discrete recognition. Preferably, as indicated by functions 8020 and8026, there is an audio indication at each such change between theserecognition modes to indicate to the user which of the modes has beenselected, so, if the wrong mode has been selected, the user can correctit merely by pressing the key again.

If the user double-clicks on the “8” key, the system enters aOne-At-A-Time mode similar to that described above with regard to thePDA embodiment.

If the user presses the “9” key, the system displays the EntryPreferences menu shown in FIG. 93. As is indicated in that figure, thismenu allows the user to select default recognition settings for normallarge vocabulary dictation, for the entry of filter strings, andre-utterances. It also allows the user to select the recognitionduration mode defaults for dictation, filtering, and reutterances, aswell as to select, at the top level of this menu, the temporary durationmode for the current dictation mode.

FIGS. 81 through 83 illustrate the operation of the correction windowroutine in the disclosed cellphone embodiment.

In this routine, function 8102 sets the recognition mode to that of thecurrent default for filter recognition, since in the correction windowthe most likely voice input would be that of a filtering string.However, the current vocabulary would normally also include thecapability to recognize commands to choose any of the choices currentlyshown on the choice list by a “choose N” voice command, where N is thenumber associated with a desired choice, or a “first choice” voicecommand to select the current first choice.

Next, function 8104 calls the displayChoiceList routine, described abovewith regard to FIG. 22, for the current selection with which thecorrection window routine has been called. This causes a correctionwindow to be displayed on the cellphone screen.

Once functions 8102 and 8104 have been performed, an input loop 8106 isperformed. In this loop, if the current navigational mode is thepage/item mode, the functions 8108 to 1818 respond to navigationalinput. If the input is a Page Left or Page Right command, function 8114scrolls the choice list up or down a page, respectively, moving thedisplay list's highlighted choice by one page. If the input is an itemup/down command, function 8118 scrolls the highlighted choice up ordown, respectively, by one choice, scrolling the screen if necessary todisplay the highlighted choice after such a move.

If the correction window is in the word/character navigation mode,functions 8120 through 8162 respond to navigational input. If the inputis a Word Left or Word Right input, functions 8124 through 8136 areperformed.

If there is a first/last character of a word within seven characters tothe left or right, respectively, of the filter cursor in the bestchoice, functions 8124 and 8126 move the filter cursor to that first orlast character, and select it. If there is no such word start or wordend within such a desired distance, function 8128 tests to see if thereis a character 5 characters to the left or right, respectively, of thefilter cursor in the best choice. If so, the filter cursor moves to andselects that character.

If the filter cursor is on or after the last character in the bestchoice and if a scroll would not extend beyond the right-most characterof all choices, functions 8132 through 8135 scroll the choice listwindow horizontally left or right by 5 characters' width. This allows auser to see rightward portions of choices that are longer than the firstchoice. If a 5 character scroll would extend past the rightmostcharacter in the choice list, function 8136 scroll rightward by thenumbers of characters, if any, that would expose rightmost character inchoice list.

If the navigational input received when the correction window is in theword/character navigation mode is a Character Up or Character Downinput, functions 1844 through 8150 are performed. Function 8144 tests tosee if the filter cursor is after the last character in the best choice.If a scroll would not extend beyond the right-most character in allchoices, then function 8147 scrolls the choice list window horizontallyleft or right by one character's width. If the filter cursor is notcurrently before or after the start of the best choice at the time thenavigational input is received, function 8150 moves the filter cursorleft or right by one character.

FIG. 81 only describes movement to characters in the current firstchoice or spaces after it, in which the character moved to is selectedby the current cursor after the move. Techniques could easily bedesigned to allow a user to position a cursor before the first choice orbetween characters in the first choice if desired. For example,functions 7606 through 7617 of FIG. 76 show how a user can selectbetween cursor movements that selects a word to the left or right, andcursor movements that makes the cursor into a non-selection cursor. Inthese functions, a non-selection cursor is chosen by a left or rightmovement immediately followed by the opposite right or left movement,respectively. A similar technique could be used in the correction windowif desired.

If a new filter string character has been moved to as a result offunctions 8126, 8130, 8147 or 8150, function 8151 causes functions 8152through 8162 to be performed. Function 8152 calls thefilterCharacterChoice routine of FIG. 30 for that character, so as todisplay a filter choice window for the character's position in thefilter string, if that position in the filter string is ambiguous. Inthe cellphone embodiment, this displays an alphabetized choice list offilter characters corresponding to the selected character in the filterstring.

If the choice list has been displayed and any subsequent input isreceived from the user, function 8153 causes functions 8154 through 8162to be performed. Function 8154 tests to see if the input is a choice inthe filtercharacterchoice window. If so, function 8156 closes the filterchoice window, function 8158 calls the filterEdit routine for the changein the filter string caused by the selection of the filter character,which will unambiguously confirm not only the selected filter characterbut all characters before it in the current first choice word, thenfunction 8160 calls the displayChoiceList routine to display a newcorrection window with choices limited to the newly edited filterstring.

As shown in FIG. 82, if the user presses the “Menu” key, function 8202calls the displayMenu routine for the correction window's commands. Thiswill cause a display of a command list similar to that shown in FIG. 69.In a manner similar to that shown for the editor mode command list inFIG. 75, this allows the user to quickly see the phone key commandmapping available when the correction window is displayed.

As shown in FIG. 82, double-clicking the “Menu” key and pressing it fora sustained period of time has corresponding results as the same inputsdo in the editor mode and other menu modes.

Pressing the “Talk” key initiates speech recognition in the correctionwindow according to the current recognition mode, which will normally bethe filter entry mode described above with regard to function 8102.

As indicated by functions 8224 through 8232, pressing the “OK” key inthe correction window will select the first choice unless another choiceis highlighted in that window. As shown by functions 8236 through 8254near the bottom of FIG. 82, the top row of numbered phone keys performedthe same or similar functions in the correction window as they do in theeditor mode. In both modes the “1” key displays the entry mode menu. Inboth modes a single click of the “2” key causes a correction window tobe in the page/item navigational mode and a double-click of the “2” keythe causes a correction window to be in the word-character navigationmode. And in both modes the “3” key is used for selecting navigationalmodes.

The operation of the “2” key is somewhat different when in thecorrection window, since a correction window is already displayed atthat time. Pressing the two key once in that mode not only sets thenavigational mode for the correction window but also removes the displayof any filtercharacterchoice window and also plays the audio of thecorrection window's selection's first utterance, if there is one.

Pressing the “3” key in the correction window displays the correctionnavigation mode menu illustrated below with regard to FIG. 85. This menualso allows the user to switch between the two navigation modes mostappropriate for the correction window by use of the 2 and 3 keys. But italso allows the user to define how the correction window will respond tothe selection of a given recognition choice displayed in the correctionwindow by means of keys 4 through 6. It also allows the user to changethe capitalization of, or to cause a Word Form list to be displayed for,the current best choice.

As shown in FIG. 83, if the user inputs a choice number, either by voicecommand or pressing one of the numbered phone keys corresponding to achoice number, functions 8302 through 8320 are performed.

The Choice Filter Mode is selected by pressing the “5” key in thecorrection navigation menu shown in FIG. 85. If the correction window iscurrently in this mode when a choice number is received, functions 8302and 8304 call the displayChoiceList routine with the choicecorresponding to the choice number as the filter string, and sets thecorrection window's navigation mode to word/character mode if thecorrection window is not currently in that navigation mode.

The Pre-Choice Filter Mode can be selected by pressing the “4” key inthe correction navigation menu of FIG. 85. If, when a choice number isinput, the correction window is in the Pre-Choice Filter Mode, function8308 causes the correction window to enter the word/character navigationmode, if it is not currently in it, and function 8310 calls thedisplayChoiceList routine with the selected choice as the end of thecurrent filter range and the prior choice as the beginning of the filterrange. If the selected choice is the first choice in an alphabeticallist of choices, the first entry in the filter range is the start of thealphabet.

If the correction window is in the Post-Choice Filter Mode, which isselected by pressing the “6” key in the correction navigation menu ofFIG. 85, functions 8312 through 8316 ensure that the correction windowis in the word/character navigation mode appropriate for filter editing,and then call the displayChoiceList routine with the selected choice asthe start of the filter range and the next choice or the end of thealphabet as the end of the filter range.

Although not shown in functions 8302 through 8316, the Choice Filter,Pre-Choice Filter, and Post-Choice Filter modes are all exited by theselection of a choice in such a mode or by any input other than theselection of a displayed choice.

If none of the three choice filter modes described in functions 8302through 8316 are in effect, function 8320 responds to user input of achoice number by returning to the editor and inserting the selectedchoice at the current selection or cursor.

If the user double-clicks on a choice number, function 8324 causes it tohave the same effect as if the user had selected that choice in thechoice filter mode described above with regard to function 8302 and8304. This allows an alternate choice word to be selected as a firstchoice and then have all or a subset of its letters used as a filter tohelp rapidly selected a desired word.

If the user single-clicks the “Star” key, function 8328 will escape fromthe correction window without making any changes to the currentselection.

The responses to “**” or the “Task List” command, “0” or the “EditOptions Menu” command, and “00” or the “Undo” command are the same inthe correction window as in the editor window.

If the user presses “#” or utters the “Backspace” command function 8350calls the filterEdit routine of FIG. 28 with any portion of the firstchoice before the filter cursor as the filter string, with the filtercursor, and with “backspace” as an input. Then Function 8352 calls thedisplayChoiceList routine of FIG. 22 with the resulting new filterstring.

If the user enters one or more filtering characters, either by voicerecognition or by having previously temporarily entered one of the entrymodes that allow the entry of characters by phone keys, function 8356calls filterEdit with the current choice, filter string, and filtercursor position, and with the newly entered one or more characters asthe new filter choice.

If the user enters a re-utterance, function 8360 adds the new utteranceto the current selection's utterance list, and function 8362 calls thedisplayChoiceList routine of FIG. 22, which, through its call to thegetchoices routine of FIG. 23, causes recognition to be performed usingboth a prior utterance, if any, and the re-utterance for the currentselection, and then displays a new correction window with the resultingbest choice if any.

FIG., 84 shows the Edit Navigation Menu 8400, which can be entered bypressing the “3” key or saying “Nav. Mode Menu” as indicated in FIG. 77.

When in the Edit Nav. Menu, if the user presses the “1” key or theenters the command “Utterance Start” and if there is a current lastutterance, functions 8404-8408 cause the text, if any, correspondingfirst word in that utterance to be selected as the cursor.

If a user in the Edit Nav Menu presses the “2” key or enters the command“Word/Char”, functions 8410 and 8412 change the navigation mode to theWord/Char navigation mode, which responds to Left or Right navigationbuttons by moving a Word Left or Right, respectively, and to Up or Downnavigational buttons by moving a character left or right, respectively.

If the user presses the “3” key or enters the command “Word/Line”,functions 8414 and 8416 change the navigation mode to the Word/Linenavigation mode, which responds to Left or Right navigation buttons bymoving a word left or right, respectively, and to Up or Downnavigational buttons by moving a line up or down, respectively.

If the user presses the “4” key or enters the command “Doc/Screen”,functions 8418 and 8420 change the navigation mode to the Doc/Screennavigation mode, which responds to Left or Right navigation buttons bymoving to the last or next start or end of a document, respectively, andto Up or Down navigational buttons by moving up or down a screen,respectively.

If the user presses the “5” key or enters the command “OutlineLevel/Item”, functions 8422 and 8424 change the navigation mode to theOutline Level/Item navigation mode, which responds to Left or Rightnavigation buttons by moving to the last parent item or next child item,respectively, in an outline, and to up or down navigational buttons bymoving up or down an item at the current level.

If a User in the Edit Nav Menu presses the “6” key or enters the command“Audio Item/5 sec”, functions 8426 through 8430 set the display of soundwaveforms to high resolution and change the navigation mode to the AudioItem/5 second navigation mode, which responds to Left or Rightnavigational buttons by moving to the last or next start or end of arecorded audio item, respectively, and to up or down navigation buttonsby skipping forward or backward 5 seconds in recorded audio,respectively.

If the user double presses the “6” key or enters the command “AudioItem/30 sec”, functions 8432 through 8436 set the display of soundwaveforms to low resolution and change the navigation mode to the AudioItem/30 second navigation mode, which responds to Left or Rightnavigational buttons by moving to the last or next start or end of arecorded audio item, respectively, and to Up or Down navigation buttonsby skipping forward or backward 30 seconds in recorded audio,respectively.

If the user presses the “7” key or enters the command “Undo List/Item”,functions 8438 and 8440 change the navigation mode to the Undo List/Itemnavigation mode, which responds to Left or Right navigation buttons bymoving to the start or end of the undo list, respectively, and to Up orDown buttons by moving to the last or next item in the undo list,respectively. This form of navigation is used to allow a moreflexibility in selecting of which commands to undo.

If the user presses the “8” key or enters the command “File Lev/Item”,functions 8442 and 8444 change the navigation mode to the File Lev/Itemnavigation mode, which responds to Left or Right navigation buttons bymoving to the last parent level or next child level, if any, in thedirectory structure, respectively, and to up or down navigationalbuttons by moving up or down an item at the current level (i.e., in thecurrent file directory). This form of navigation is used to allow a userto navigate a file structure on the cellphone.

If a user in the Edit Nav Menu presses the “9 key or enters the command“Utterance End”, if there is a current last utterance, functions 8448and 8450 select as the cursor the text corresponding to the last word inthat utterance, and then return.

If the user presses the “*” key or enters the command “Escape”,functions 8452 and 8454 return to the editor window.

If the user double presses the “*” key or enters the command “TaskList”, functions 8456 and 8458 go to the Task List routine.

FIG. 85 illustrates the Correction Navigation Menu that is accessed bypressing the “3” key when in the correction window, as discussed abovewith regard to function 8254 of FIG. 82.

If a user in the Correction Navigation Menu presses the “2” key orenters the command “Page/Item”, functions 8504 and 8506 change thenavigation mode to the Page/Item navigation mode, which responds to Leftor Right navigation buttons by moving up or down a page in the currentchoice list, respectively, and to Up or Down navigational buttons bymoving up or down an individual choice in the current choice list,respectively.

If the user double presses the “2” key, presses the “3” key, or entersthe command “Word/Char”, functions 8508 and 8510 change the navigationmode to the Word/Char navigation mode, which responds to Left or Rightnavigation buttons by moving a word left or right, respectively, and toUp or Down navigational buttons by moving a character left or right,respectively.

If the user presses the “4” key or enters the command “Pre-ChoiceFilter”, functions 8516 through 8520 set the Correction Window toPre-Choice Filter Mode and change the navigation mode to the Page/Itemmode, described above with regard to functions 8504 and 8506. As wasstated above with regard to functions 8306 through 8310 of FIG. 83, thePre-Choice Filter mode allows a user to select an alphabetic filterrange between two adjacent words on a choice list.

If the user presses the “5” key or enters the command “Choice Filter”,functions 8522 through 8526 set the Correction Window to Choice FilterMode and change the navigation mode to the Page/Item mode. As was statedabove with regard to functions 8302 and 8304, the Choice Filter modeallows a user to select an alternate choice to be the first choice andthe current filter string. Once such a choice is made the user can editthe filter string if only certain characters in the selected word are inthe desired word.

If the user presses the “6” key or enters the command “Post-ChoiceFilter”, functions 8528 through 8532 set the Correction Window toPost-Choice Filter Mode and change the navigation mode to the Page/Itemmode. As was stated above with regard to functions 8312 through 8316 ofFIG. 83, the Post-Choice Filter mode, like the Pre-Choice Filter Mode,allows a user to select an alphabetic filter range between two adjacentwords on a choice list.

Each time a user in the Correction Navigation Menu presses the “7” keyor enters the command “Capitalize”, functions 8534 and 8536 cause thecurrent choice to progress one stage through the capitalization cycle,which changes to initial caps, all caps, and then no caps.

If a user in the Correction Navigation Menu presses the “8” key orenters the command “Word Form List”, functions 8538 and 8540 cause theword form list to be displayed for the current choice.

The “Escape” and “Task List” commands function substantially the same inthe Correction Navigation Menu as in most other menus.

FIG. 86 illustrates the keyAlpha mode which has been described above tosome extent with regard to FIG. 72. As indicated in FIG. 86, when thismode is entered the navigation mode is set to the word/characternavigation mode normally associated with alphabetic entry. Then function8604 overlays the keys listed below it with the functions indicated witheach such key. In this mode, pressing the Talk key turns on recognitionwith the AlphaBravo vocabulary according to current recognition settingsand responding to the key press according to the current recognitionduration setting.

The “1” key continues to operate as the entry edit mode key so the usercan press it to exit the keyAlpha mode.

A pressing of the numbered phone keys “2” through “9” causes functions8618 through 8624 to be performed during such a press. Function 8618displays a prompt of the ICA words corresponding to the phone key'sletters. Function 8620 substantially limits the recognition vocabularyto one of the three or four displayed ICA words. Function 8622 turns onrecognition for the duration of the press. And Function 8624 outputs theletter corresponding to the recognized ICA word either into the text ofthe editor, if in editor mode, or into the filter string, if infilterEdit mode.

If the user presses the “0” button, function 8628 enters a keypunctuation mode that responds to the pressing of any phone key havingletters associated with it by displaying a scrollable list of allpunctuation marks that start with one of the set of letters associatedwith that key, and which favors the recognition of one of thosepunctuation words.

If a user in the KeyAlpha mode double presses “0” button or enters the“Space” command, function 8632 will output a space.

If the user press the “#” key or enters the “Backspace” command,function 8636 tests to see if there is a current selection. If so,function 8638 deletes that selection. If not, Functions 8640 and 8642test to see if the current smallest navigational unit associated with anavigational key is a character, word, or outline item, and if so, itdeletes the last such unit before the current cursor position.

FIG. 87 represents an alternate embodiment of the keyAlpha mode, whichis identical to that of FIG. 86 except for portions of the pseudocodewhich are underlined in FIG. 87. In this mode, if the user presses theTalk button, large vocabulary recognition will be turned on but only theinitial letter of each recognized word will be output, as indicated infunction 8608A. As functions 8618A and 8620A indicate, when the userpresses a phone key having a set of three or four letters associatedwith it, the user is prompted to say a word starting with the desiredletter and the recognition vocabulary is substantially limited to wordsthat start with one of the key's associated letters, and function 8624Aoutputs the initial letter corresponding to the recognized word.

FIG. 88 represents a second alternate embodiment of the keyAlpha mode,which is identical to that of FIG. 86 except for portions of thepseudocode that are underlined in FIG. 88. As is indicated in FIG. 88,in this second alternative a limited set of words is associated witheach letter of the alphabet and during the pressing of the key,recognition is substantially limited to recognition of the set of wordsassociated with the key's associated letters. In some such embodiments,a set of five or fewer words would be associated with each such letter.

FIGS. 89 and 90 represent some of the options available in the EditOptions Menu, which is accessed by pressing the 0 button in the editorand correction window modes.

In this menu, if the user presses the “1” key, he gets a menu of fileoptions as indicated at function 8902. If the user presses the “2” key,he gets a menu of edit options, such as those that are common in mostediting programs, as indicated by function 8904. If the user presses the“3” button, function 8906 displays the same entry preference menu thatis accessed by pressing a “9” in the entry mode menu described abovewith regard to FIGS. 68 and 80.

If the user presses the “4” key when in the edit options menu, atext-to-speech or TTS menu will be displayed. In this menu, the “4” keytoggles TTS play on or off.

The TTS submenu also includes a choice, selected by pressing the “5”key, that allows the user to play the current selection whenever he orshe desires to do so, as indicated by functions 8924 and 8926.

The Submenu also includes functions 8928 and 8930, which are selected bypressing the “6” key, that allow the user to toggle continuous TTS playon or off. This causes TTS speech synthesis to start at the start of thecurrent cursor and continue until the end of the current document,independently of the state of TTS playback that has resulted fromfunctions 8910 through 8912.

As indicated by the top-level choices in the edit options menu at 8932,a double-click of the “4” key toggles text-to-speech on or off, just asif the user had pressed the “4” key, then waited for the text-to-speechmenu to be displayed and then again pressed the “4” key.

The “5” key in the Edit Options Menu selects the outline menu thatincludes a plurality of functions that let a user navigate in, andexpand and contract, headings in an outline mode. If the userdouble-clicks on the “5” key, the system toggles between totallyexpanding and totally contracting the outline element in which theeditor's cursor is currently located.

If the user selects the “6” key an audio menu is displayed as a submenu,some of the options of which are displayed indented under the audio menuitem 8938 in the combination of FIGS. 89 and 90.

If a user selects the Audio Navigation option 8940 of the audio menu bypressing the “1” key, an Audio Navigation sub-menu will be displayedwhich includes options 8942 through 8948 which allow the user more waysnavigate with the navigation keys in audio recordings than are providedby the options 8426 and 8432 shown FIG. 84.

If the user selects the Playback Settings option by pressing the “2”key, he or she will see a submenu that allows adjustment of audioplayback settings, such as volume and speed and whether audio associatedwith recognized words and/or audio recorded without associatedrecognized words is to be played.

FIG. 90 starts with options selected by the “3”, “4”, “5”, “6” and “7”keys under the audio menu described above, which is displayed inresponse to selection of the Audio Menu option 8938 in FIG. 89.

If the user presses the “3” key, a recognized audio options dialog box9000 will be displayed that, as is described by numerals 9002 through9014, gives the user the option to select to perform speech recognitionon any audio contained in the current selection in the editor, torecognize all audio in the current document, to decide whether or notpreviously recognized audio is to be re-recognized, and to setparameters to determine the quality of, and time required by, suchrecognition. As indicated at line 9012 and 9014, this dialog boxprovides an estimate of the time required to recognize the currentselection with the current quality settings and, if a task ofrecognizing a selection is currently underway, status on the currentjob. This dialog box allows the user to perform recognitions onrelatively large amounts of audio as a background task or at times whena phone is not being used for other purposes, including times when it isplugged into an auxiliary power supply.

If the user selects the delete from selection option by pressing the “4”key in the audio menu, the user is provided with a submenu that allowshim to select to delete certain information from the current selection.This includes allowing the user to select to delete all audio that isnot associated with recognized words, to delete all audio that isselected with recognized words, to delete all audio, or to delete textfrom the desired selection. Deleting recognition audio from recognizedtext greatly reduces the memory associated with the storage of such textand is often a useful thing to do once the user has decided that he doesnot need the text-associated audio to help him her determine itsintended meaning. Deleting text but not audio from a portion of media isoften useful where the text has been produced by speech recognition fromthe audio but is sufficiently inaccurate to be of little use.

In the audio menu, the “5” key allows the users to select whether or nottext that has associated recognition audio is marked, such as byunderlining to allow the user to know if such text has playback that canbe used to help understand it or, in some embodiments, will have anacoustic representation from which alternate recognition choices can begenerated.

The “6” key allows the user to choose whether or not audio against whichspeech recognition has been performed is to be kept in recorded form inassociation with the resulting recognized text. In many embodiments,even if the recording of recognition audio is turned off, such audiowill be kept for some number of the most recently recognized words sothat it will be available for possible correction playback andre-utterance recognition.

As indicated by numeral 9030, in the audio menu, the “7” key selects atranscription mode dialog box. If this input is selected a transcriptionmode dialog box is displayed, that allows the user to select settings tobe used in a transcription mode that is described below with regard toFIG. 96. This is a mode that is designed to make it easy for user totranscribe pre-recorded audio by speech recognition.

The “7” pointed to by the numeral 9032 can be selected directly from theEdit Options Menu, unlike the “7” described in the paragraph above,which is selected from the Audio Menu, which itself is a submenu of theEdit Options Menu. This difference is indicated by the different levelof indentation of the two “7”s.

Pressing the “7” key pointed to by numeral 9032 selectsthe User Menuoption. If this option is selected a User Menu is displayed whichpresents information and choices relating one or more users of thecellphone.

If the user presses the “8” key, function 9036 will be performed. Itcalls a search dialog box with the current selection, if any, as thedefault search string. As will be illustrated below, the speechrecognition text editor can be used to enter a different search string,if so desired.

If the user double-clicks on the “8” key, this will be interpreted as afind again command, which will search again for the last search stringfor which a search was performed using the search dialog box.

If the user selects the “9” key in the edit options menu, a vocabularymenu is displayed that allows the user to determine which words are inthe current vocabulary, to select between different vocabularies, and toadd words to a given vocabulary.

If the user either single or double-presses the “0” button when in theedit options menu, an undo function will be performed, that in manycases will undo the last command. A double click of the “0” key accessesthe undo function from within the edit options menu to providesimilarity with the fact that a double-click on “0” accesses the undofunction from the editor or the correction window.

In the edit options menu, the “#” key operates as a redo button.

FIGS. 91 and 92 illustrate the Word Type Menu 9100, which is accessed bypressing the “8” key in Editor Mode, as shown in FIG. 77.

If the user enters the Word Type Menu, function 9102 tests whether thecurrent selection is a multi-word selection. If so, function 9104prompts the user that word type filtering only works on single wordselections and returns to the mode from which the Word Type Menu wascalled. If the current selection is a single word, function 9106 changesthe active vocabulary while in the Word Type Menu to the names ofcommands available in that menu. Then function 9108 responds to a userselection of one of the phone keys.

If the user presses “1” in the Word Type Menu, function 9112 displays aWord-Ending sub-menu that allows a user to select a given word ending,which cause the currently selected word to be changed to a correspondingword having the selected given ending either added or removed. Forexample, if the user presses the “6” key when in this word endingsub-menu, if the current selection ends in “ly”, the “ly” ending will beremoved, and if it does not terminate with an “ly” ending, that endingwill be added.

If the user presses “2” when in the Word Type Menu, function 9132displays a prefix sub-menu that allows a user to select to change thecurrently selected word to a corresponding word having a selected prefixeither added or removed.

If the user presses “3”, function 9140 displays a Word Tense sub-menuthat allows a user to select to change the currently selected word to acorresponding word having a selected tense.

If the user presses “4”, function 9202 displays a Part-of-Speechsub-menu that allows a user to display a new choice list for therecognition of the select word in which all the choices are limited tothe part-of-speech selected in that sub-menu. For example, if the systemmisrecognized “and” as “an”, pressing 7 in this submenu would limitrecognition of the current word to words that were conjunctions, and,thus, would virtually insure than “and” would be a displayed wordchoice.

If the user, when in the Word Type Menu of FIGS. 91 and 92, presses “5”,function 9224 changes the currently selected word to possessive form ifit is non-possessive, and to a non-possessive form if it is inpossessive form.

If the user presses “6”, function 92268 changes the currently selectedword to plural form if it is singular, and to a singular form if it isplural.

If the user presses “7”, function 9232 changes the form of a currentlyselected verb to plural form if it is singular, and to a singular formif it is plural.

If the user, in the Word Type Menu of FIGS. 91 and 92, presses “8”,function 9236 changes the currently selected word to a spelled form ifit is currently non-spelled, and to a non-spelled form if it is spelled.For example, this would change the word “period” to “.”, the mark “,” to“comma”, and the word “three” to “3”.

If the user presses “9”, functions 9240 through 9246 are performed. Ifthe currently selected word has only one homonym, functions 9240 and9242 cause it to be replaced by that one homonym. If the currentlyselected word has multiple homonyms, functions 9244 and 9246 display acorrection window that lists the current word as the first choice andits homonyms and alternate forms of the selected word, such ascorresponding numerals or punctuation marks, as alternate choices. Ifthe word has no homonyms, no change will be made.

In the Word Type Menu, and almost all other menus the key can be used toexit the menu and return to the mode from which the menu was called.

FIG. 93 describes the Entry Preference Menu 9300 which can be entered bypressing the “9” key in the Entry Mode Menu described above with regardto FIGS. 79 and 80.

In this menu, pressing the “1”, “2”, and “3” phone keys will cause arespective submenu to be displayed.

In the Entry Preference Menu pressing “1” causes the Dictation Defaultssubmenu to be displayed. This displays menu options that allow a user toset default attributes for normal dictation. These are the attributesthat will be applied to dictation each time dictation mode is entered,until or unless the user first changes such attributes or changes thedefault values for such attributes. The attributes that can be set bythis menu include whether the default dictation mode is continuous ordiscrete dictation; whether One-At-A-Time discrete dictation isperformed, in which a correction window is displayed after therecognition of each word; and the recognition duration modes to be usedas the current default for dictation.

Pressing “2” causes the Filter Defaults submenu to be displayed. Thisdisplays menu options that allow a user to set various settings to beused as defaults for the entering of filter strings in the correctionwindow. These include whether the default filter entry dictation mode iscontinuous, discrete, discrete One-At-A-Time, letter name, ambiguousletter name, or KeyAlfpha dictation; and what recognition duration modeis to be used as the current default for dictation.

Pressing “3” causes the Reutterance Defaults submenu to be displayed.This displays menu options that allow a user to set various settings tobe used as defaults for use in reutterance recognition. These includewhether such recognition is continuous or discrete and the recognitionduration mode to be used as the default for such recognition.

In the Entry Preference Menu the phone keys “4” through “8” are used toset the current recognition duration modes, as opposed to the defaultrecognition duration modes described above with regard to the pressingof keys “1” through “3”. Pressing “4” sets the current recognitionduration mode to Press-Only; pressing “5” sets it toPress-&-Click-To-Utterance-End; pressing “6” toPress-Continuous,-Click-Discrete-To-Utterance-End mode, and “7” toClick-To-Timeout-mode. Pressing “8” displays a dialog box for settingthe length of the timeout duration that is used in the Click-To-Timeoutmode.

FIG. 94 illustrates the text-to-speech or “TTS” play rules. These arethe rules that govern the operation of TTS generation of speech fromtext when TTS “on” operation has been selected through thetext-to-speech options described above with regard to function 8912 or8932 of FIG. 89.

If a TTS keys mode has been turned on by pressing the 1 key in the TTSMenu, as indicated by function 8909 of FIG. 89, function 9404 of FIG. 94causes functions 9406 to 9414 to provide text-to-speech or recordedaudio feedback on the identity and function of each key that is pressed,so as to enable a user to safely select phone keys without being able tosee them, such as when driving a car. Preferably this mode is notlimited to operation in the speech recognition editor but can also beused in any mode of the cellphone's operation.

When any phone key is pressed when TTS Keys mode is on, function 9408tests to see if the same key has been pressed within a TTS KeyTime,which is a short period of time such as a quarter or a third of asecond. For purposes of this test, the time is measured since therelease of the last key press of the same key. If the same key has notbeen pressed within that short period of time, functions 9410 and 9412cause a text-to-speech or, in some embodiments, a recorded utterance ofthe number of the key and its current command name. This audio feedbackcontinues only as long as the user continues the press the key. If thekey has a double-click command associated with it, it also will be saidif the user continues to press the key long enough. If the test offunction 9408 finds that the time since the release of the last keypress of the same key is less than the TTS key time function 9414 thecellphone's software responds to the key press, including anydouble-clicks, the same as it would as if the TTS key mode were not on.

Thus it can be seen that the TTS keys mode allows the user to find acellphone key by touch, to press it to hear if it is the desired keyand, if so, to quickly press it again one or more times to achieve thekey's desired function. Since the press of a key that is responded to byfunctions 9410 and 9412 does not cause any response other than thesaying of the key's name and associated function, this mode allows theuser to search for the desired key without causing any undesiredconsequences.

In some cellphone embodiments, the cellphone keys can be designed tosense when they are merely being touched separately from when they arebeing pushed. In such embodiments the TTS Keys mode could be used toprovide audio feedback as to which key is being touched and its currentfunction, similar to the feedback provided by function 9412 of FIG. 94.Such touch sensitivity can be provided, for example, by having the outersurface of the phone keys made of conductive material, and by havingother portions of the phone separated from those keys generate a voltagethat if conducted through a user's body to a key, can be detected bycircuitry associated with the key. Such a system would provide an evenfaster way for a user to find a desired key by touch, since with it auser could receive feedback as to which keys he was touching merely byscanning a finger over the keypad in the vicinity of the desired keywithout having to first press a key to hear its name. It would alsoallow a user to rapidly scan for a desired command name by likewisescanning his fingers over successive keys until the desired command wasfound.

When TTS is on, if the system recognizes or otherwise receives a commandinput, functions 9416 and 9418 cause TTS or recorded audio playback tosay the name of the recognized or otherwise received command. Preferablysuch audio confirmations of commands have a sound quality, such as adifferent tone of voice or different associated sound, thatdistinguishes the saying of command words from the saying of recognizedtext.

When TTS is on, when a text utterance is recognized, functions 9420through 9424 detect the end of the utterance, and the completion of theutterance's recognition and then use TTS to say the words that have beenrecognized as the first choice for the utterance.

As indicated in functions 9426 through 9430, when TTS is on, it respondsto the recognition of a an utterance corresponding to a string ofcharacters, such as one entering a filter string, by waiting until theend of that utterance and then using TTS to say the letters recognizedfor it.

When in TTS, if the user moves the cursor to select a new word orcharacter, functions 9432 to 9438 use TTS to say that newly selectedword or character. If such a movement of a cursor to a new word orcharacter position extends an already started selection, after thesaying of the word or character corresponding to the new cursorposition, functions 9436 and 9438 will say the word “selection” in amanner that indicates that it is not part of recognized text, and thenproceed to say the words of the current selection. If the user moves thecursor so it becomes a non-selection cursor, such as is described abovewith regard to functions 7614 and 7615 of FIG. 76, functions 9440 and9442 of FIG. 94 use TTS to say a message informing the user of the twowords cursor is between.

When in TTS mode, if a new correction windows is displayed, functions9444 and 9446 use TTS to say the first choice in the correction window,then spell the current filter string if any, indicating which parts ofit are unambiguous and which parts of it are ambiguous, and then use TTSto say each candidate in the currently displayed portion of the choicelist. For purposes of speed, it is best that differences in tone orsound be used to indicate which portions of the filter are absolute orambiguous.

If the user scrolls an item in the correction window, functions 9448 and9450 use TTS to say the currently highlighted choice and its selectionnumber in response to each such scroll. If the user scrolls a page in acorrection window, functions 9452 and 9454 use TTS to say that newlydisplayed choices as well, as indicating which of them is the currentlyhighlighted choice.

When in TTS mode, if the user enters a menu, functions 9456 and 9458 useTTS or recorded audio to say the name of the current menu and all of thechoices in the menu and their associated numbers, indicating the currentselection position. Preferably this is done with audio cues thatindicate to a user that the words being said are menu options.

If the user scrolls up or down an item in a menu, functions 9460 and9462 use TTS or pre-recorded audio to say the highlighted choice andthen, after a brief pause, any following selections on the currentlydisplayed page of the menu.

FIG. 95 illustrates some aspects of the programming used in TTSgeneration.

If a word to be generated by text-to-speech is in the speech recognitionprogramming's vocabulary of phonetically spelled words, function 9502causes functions 9504 through 9512 to be performed. Function 9504 teststo see if the word has multiple phonetic spellings associated withdifferent parts of speech, and if it has a current linguistic contextindicating its current part of speech. If both these conditions are met,function 9506 uses the speech recognition programming'spart-of-speech-indicating code to select the phonetic spelling for theword that is associated with the part of speech found most probable bythat part-of-speech-indicating code as the phonetic spelling to be usedin the TTS generation for the current word.

If, on the other hand, there is only one phonetic spelling associatedwith the word or there is no context sufficient to identify the mostprobable part of speech for the word, function 9510 selects the singlephonetic spelling for the word or the word's most common phoneticspelling. Once a phonetic spelling has been selected for the word to begenerated either by function 9506 or function 9510, function 9512 usesthe phonetic spelling selected for the word as a phonetic spelling to beused in the TTS generation. If, as is indicated at 9514, the word to begenerated by text-to-speech does not have a phonetic spelling, function9514 and 9516 use pronunciation guessing software that is used by thespeech recognizer to assign a phonetic spelling to names and newlyentered words for the text-to-speech generation of the word.

FIG. 96 describes the operation of the transcription mode that can beselected by operation of the transcription mode dialog box that isactivated by pressing the “7” key to select option 9030 under the AudioMenu submenu of the Edit Options Menu described above in associationwith FIG. 90. This mode is used to make is easier for a user totranscribe a portion of pre-recorded audio by means of speechrecognition.

When the transcription mode is entered, function 9602 normally changesnavigation mode to an audio navigation mode that navigates forward orbackward five seconds in an audio recording in response to Left andRight navigational key input and forward and backward one second inresponse to Up and Down navigational input. These are default valueswhich can be changed in the transcription mode dialog box.

During transcription mode, if the user clicks, rather than presses, the“Play” key, which is the “6” key in the editor, functions 9606 through9614 are performed. Functions 9607 and 9608 toggle play between on andoff. Function 9610 causes functions 9612 to be performed if the toggleis turning play on. If so, if there has been no sound navigation sincethe last time sound was played, function 9614 starts playback a setperiod of the time before the last playback ended. This is done so thatif the user is performing transcription, each successive playback willstart slightly before the last one ended, enabling the user to recognizewords that were only partially said in the prior playback and so thatthe user will better be able to interpret speech sounds as words bybeing able to perceive more of the preceding language context.

If the user presses, rather than clicks, the play key (i.e., if hepresses it for more than a specified period of time), such as a third ofthe second, function 9616 causes functions 9618 through 9622 to beperformed. These functions test to see if play is on, and if so theyturn it off. They also turn on large vocabulary recognition during thepress, in either continuous or discrete mode, according to presentsettings. They then insert the recognize text into the editor in thelocation in the audio being transcribed at which the last end of playtook place. If the user double-clicks the play button, functions 9624and 9626 prompt the user that audio recording is not available intranscription mode and that transcription mode can be turned off in theaudio menu under the edit options menu.

It can be seen that transcription mode enables the user to alternatebetween playing a portion of previously recorded audio and thentranscribing it by use of speech recognition by merely alternatingbetween clicking and making sustained presses of the play key, which isthe number “6” phone key. The user is free to use the otherfunctionality of the editor to correct any mistakes that have been madein the recognition during the transcription process, and then merelyreturn to it by again pressing the “6” key to play the next segment ofaudio to be transcribed. Of course, a user will often not desire toperform a literal transcription of the audio. For example, the user mayplay back a portion of a phone call and merely transcribe a summary ofthe more noteworthy portions.

FIG. 97 illustrates the operation of a dialogue box editing programmingthat uses many features of the editor mode described above to enableusers to enter text and other information into a dialogue box displayedin the cellphone's screen.

When a dialogue box is first entered, function 9702 displays an editorwindow showing the first portion of the dialog box. FIG. 115 provides anillustration of such a dialog box. If the dialog box is too large to fiton one screen at one time, it will be displayed in a scrollable window,as is shown in FIG. 115. As indicated by function 9704, the dialog boxresponds to all inputs in the same way that the editor mode describedabove with regard to FIGS. 76 through 78 does, except as is indicated bythe functions 9704 through 9726.

As indicated at 9707 and 9708, if the user supplies navigational inputwhen in a dialog box, the cursor movement responds in a manner similarto that in which it would in the editor except that it can normally onlymove to a control into which the user can supply input. Thus, if theuser moved left or right of the start or end of a dialog box control,the cursor would move left or right to the next dialog box control,moving up or down lines if necessary to find such a control. If the usermoves up or down a line, the cursor would move to the nearest control inthe nearest of the lines above or below the current cursor position. Inorder to enable the user to read extended portions of text in a dialogbox that might not contain any controls, normally a cursor will not movemore than a page even if there are no controls within that distance.

As indicated by functions 9700 and through 9716, if the cursor has beenmoved to a control with is a text field and the user provides any inputof a type that would input text into the editor, function 9712 displaysa separate editor window for the field, which displays the textcurrently in that field, if any. If the field has any vocabularylimitations associated with it, functions 9714 and 9716 limit therecognition in the editor to that vocabulary. For example, if the fieldwere limited to state names, recognition in that field would be solimited. As long as this field-editing window is displayed, function9718 will direct all editor commands to perform editing within it. Theuser can exit this field-editing window by selecting OK, which willcause the text currently in the window at that time to be entered intothe corresponding field in the dialog box window.

If the cursor in the dialog box is moved to a control that is a choicelist and the user selects a text input command, function 9722 displays acorrection window showing the current value in the list box as the firstchoice and other options provided in the list box as other availablechoices shown in a scrollable choice list. In these scrollable choicelists, the options are not only accessible by selecting an associatednumber but also are available by speech recognition using a vocabularysubstantially limited to those options.

If the cursor is in a control that is a check box or a radio button andthe user selects any editor text input command, functions 9724 and 9726change the state of the check box or radio button, by toggling whetherthe check box or radio button is selected.

FIG. 98 illustrates a help routine 9800, which is the cellphoneembodiment analog of the help mode described above with regard to FIG.19 in the PDA embodiments. When this help mode is called when thecellphone is in a given state or mode of operation, function 9802displays a scrollable help menu for the state that includes adescription of the state along with a selectable list of help optionsand of all of the state's commands.

FIG. 99 displays such a help menu for the editor mode described abovewith regard to FIGS. 67 and 76 through 78. FIG. 100 illustrates such ahelp menu for the entry mode menu described above with regard to FIG. 68and FIGS. 79 and 80.

As his shown in FIGS. 99 and 100, each of these help menus includes ahelp options selection 9902, which can be selected by means of ascrollable highlight and operation of the help key. If selected, optionswill be provided that will allow the user to quickly jump to the variousportions of the help menu as well as the other help related functions.

Each help menu also includes a brief statement, 9904, of the currentcommand state the cellphone is in. Each help menu also includes ascrollable, selectable menu 9906 listing all the options accessible byphone key. It also includes a section 9908 which contains options thatallow the user to access other help functions, including a descriptionof how to use the help function and in some cases help about thefunction of different portions of the screen that is available in thecurrent mode.

As shown in FIG. 101, if the user in the editor mode makes a sustainedpress on the menu key as indicated at 10100 near the upper left-handcorner of that figure by the downward arrow that extends from the “Menu”key, the help mode will be entered for the editor mode, causing thecellphone to display the screen 10102. This displays the selectable helpoptions, option 9902, and displays the beginning of the briefdescription of the operation of the other mode 9904 shown in FIG. 99.

In help mode the right navigation key of the cellphone functions as aPage Right button, since, in help mode, the navigational mode is apage/line navigational mode, as indicated by the characters“<{circumflex over ( )}L” shown in screen 10102. If the user presses theRight Arrow in help mode the display will scroll down a page asindicated by screen 10104 of FIG. 101. If the user presses the PageRight key again, the screen will again scroll down a page, causing thescreen to have the appearance shown at 10106. In this example, the userhas been able to read the summary of the function of the editor mode9904 shown in FIG. 99 with just two clicks of the Page Right key.

If the user clicks the Page Right key again causing the screen to scrolldown a page, as shown in the screen shot 10108, the beginning of thecommand list associated with the editor mode can be seen. The user canuse the navigational keys to scroll the entire length of the help menu,if so desired. In the example shown, when the user finds the key numberassociated with the entry mode menu, he presses that key as shown at10110 to cause the help mode to display the help menu associated withthe entry mode menu as shown at screen 10112.

It should be appreciated that whenever the user is in a help menu, hecan immediately select the commands listed under the “select by key”line 9910 shown in FIG. 99 by pressing or double-clicking the numberassociated with each command. Thus, there is no need for a user toscroll down to the portion of the help menu in which commands are listedto press the key associated with a command in order to see its function.In fact, a user who thinks he understands the function associated withthe key can merely make a sustained press of the menu key and then typethe desired key to see a brief explanation of its function and a list ofthe commands, if any, that are available under it.

The commands listed under the “select by OK” line 9912 shown in FIGS. 99and 100 have to be selected by scrolling the highlight to the command'sline in the menu and then pressing the “OK” key or entering the OKcommand. This is because the commands listed below the line 9912 areassociated with keys that are used in the operation of the help menuitself. This is similar to the commands listed in screen 7506 of theeditor mode command list shown in FIG. 75, which are also onlyselectable by selection with the OK command in that command list.

In the example of FIG. 101, it is assumed that the user knows that theentry preference menu can be selected by pressing a “9” in the entrymode menu, and presses that key as soon as he enters help for the entrymode menu as indicated by 10114. This causes the help menu for the entrypreference menu to be shown as illustrated at 10116.

In the example, the user presses the “1” key followed by the escape key.The “1” key briefly calls the help menu for the dictation defaultsoption and the escape key returns to the entry preference menu at thelocation and menu associated with the dictation defaults option, asshown by screen 10118. Such a selection of a key option followed by anescape allows the user to rapidly navigate to a desired portion of thehelp menu's command list merely by pressing the number of the key inthat portion of the command and list followed by an escape.

In the example, the user presses the Page Right key as shown at 10120 toscroll down a page in the command list as indicated by screen 10122. Inthe example, it is assumed the user selects the option associated withthe “6” key, by pressing that key as indicated at 10124 to obtain adescription of the Press-Continuous,-Click-Discrete-To-Utterance-Endoption. This causes a help menu for that option to be displayed as shownin screen 10126. In the example, the user scrolls down two more screensto read the brief description of the function of this option and thenpresses the escape key as shown at 10128 to return back to the help menufor the entry preference menu as shown at screen 10130.

As shown in FIG. 102, in the example, when the user returns to help forthe entry preference menu, he or she selects the “5” key as indicated bynumeral 10200, which causes the help menu for theDuring-Press-and-Click-To-Utterance-End option, as shown at screen10202. The user then scrolls down two more screens to read enough of thedescription of this mode to understand its function and then, as shownat 10204, presses the “*” key to escape back up to help for the entrypreference menu as shown at screen 10206.

The user then presses escape again to return to the help menu from whichthe entry preference menu had been called, which is the help menu forthe entry mode menu as shown at screen 10210. The user presses escapeagain to return to the help menu from which help for entry mode had beencalled, which is the help menu for the editor mode as shown in screen10214.

In the example, it is assumed the user presses the Page Right key sixtimes to scroll down to the bottom portion, 9908, shown in FIG. 99 ofthe help menu for the editor mode. If the user desires he can use avoice command to access options in this portion of the help menu morerapidly.

Once in the “other help” portion of the help menu, the user presses thedown line button as shown at 10220 to move the selection highlight downto the editor screen option 10224 shown in the screen 10222. At thispoint, the user selects the OK button causing help for the editor screenitself to be displayed as is shown in screen 10228.

In the mode in which this screen is shown, phone key number indicators10230 are used to label portions of the editor screen. If the userpresses one of these associated phone numbers, a description of thecorresponding portion of the screen will be displayed. In the example ofFIG. 102, the user presses the “4” key, which causes an editor screenhelp screen 10234 to be displayed, which describes the function of thenavigation mode indicator “<W{circumflex over ( )}L” shown at the top ofthe editor screen help screen 10228.

In the example, the user presses the escape key three times as is shownto numeral 10236. The first of these escapes from the screen 10234 backto the screen 10228, giving the user the option to select explanationsof other of the numbered portions of the screen being described. In theexample, the user has no interest in making such other selections, andthus has followed the first press of the escape key with two other rapidpresses, the first of which escapes back to the help menu for the editormode and the second of which escapes back to the editor mode itself.

As can be seen in the FIGS. 101 and 102, the hierarchical operation ofhelp menus enables the user to rapidly explore the command structure onthe cellphone. This can be used either to search for a command thatperforms a desired function, or to merely learn the command structure ina linear order.

FIGS. 103 and 104 describe an example of a user continuously dictatingsome speech in the editor mode and then using the editor's interface tocorrect the resulting text output.

The sequence starts in FIG. 103 with the user making a sustained pressof the talk button as indicated at 10300 during which he says theutterance 10302. This results in the recognition of this utterance,which in the example causes the text shown in screen 10304 to bedisplayed in the editor's text window 10305. The numeral 10306 points tothe position of the cursor at the end of this recognized text. Asindicated by the fact that the cursor does not highlight and words orcharacters, it is currently a non-selection cursor, and it is located atthe end of the continuous dictation.

It is assumed that the system has been set to a mode that will cause theutterance to be recognized using continuous large vocabulary speechrecognition. This is indicated by the characters “LV” 10307 in the titlebar of the editor window shown in screen 10304.

In the example, the user presses the “3” key to access the editnavigation menu illustrated in FIGS. 70 and 84 and then presses the “1”button to select the Utterance Start option shown in those figures. Thismakes the cursor correspond to the first word of the text recognized forthe most recent utterance as indicated at 10308 in screen 10310. Next,the user double-clicks the “7” key to select the capitalized cyclefunction described in FIG. 77. This causes the selected word to becapitalized as shown at 10312.

Next, the user presses the Right button, which in the current word/linenavigational mode, indicated by the navigational mode indicator 10314,functions as a Word Right button. This causes the cursor to move to thenext word to the right, 10316. Next the user presses the “5” key to setthe editor to an extended selection mode as described above with regardto functions 7728 through 7732 of FIG. 77. Then the user presses theword right again, which causes the cursor to move to the word 10318 andthe extended selection 10320 to include the text “got it”.

Next, the user presses the “2” key to select the choice list command ofFIG. 77, which causes a correction window 10322 to be displayed with theselection 10320 as the first choice and with a first alphabeticallyordered choice list shown, as displayed at 10324. In this choice list,each choice is shown with an associated phone key number that can beused to select it.

In the example, it is assumed that the desired choice is not shown inthe first choice list, so the user presses the Right key three times toscroll down to the third screen of the second alphabetically orderedchoice list, shown in screen 10328, in which the desired word “product”is located.

As indicated by function 7706 in FIG. 77, when the user enters thecorrection window by a single press of the choice list button, thecorrection window's navigation mode is set to the page/item navigationalmode, as is indicated by the navigational mode indicator 10326 shown inscreen 10332.

In the example, the user presses the “6” key to select the desiredchoice, which causes it to be inserted into the editor's text window atthe location of the cursor selection, causing the editor text window toappear as shown at 10330.

Next, the user presses the Word Right key three times to place thecursor at the location shown in screen 10332. In this case, therecognized word is “results” and a desired word is the singular form ofthat word “result.” For this reason, the user presses the word form listbutton, which causes a word form list correction window, 10334, to bedisplayed. In the example, this correction window has the desiredalternate form as one of its displayed choices. The user selects thedesired choice by pressing its associated phone key, causing theeditor's text window to have the appearance shown at 10336.

As shown in FIG. 104, the user next presses the line down button to movethe cursor down to the location 10400. The user then presses the “5” keyto start an extended selection and presses the word key to move thecursor right one word, causing the current selection 10404 to beextended rightward by that one word.

Next, the user double-clicks the “2” key to select a filter choicesoption described above with regard to function 7712 through 7716, inFIG. 77. The second click of the “2” key is an extended click, asindicated by the down arrow 10406. During this extended press, the usercontinuously utters the letter string, “p, a, i, n, s, t,” which are theinitial letters of the desired word, “painstaking.”

In the example, it is assumed that the correction window is in thecontinuous letter name recognition mode as indicated by the characters“abc” 10410 in the title bar of the correction window screen 10412.

In the example, the recognition of the utterance 10408 as filter inputcauses the correction window 10412 to show a set of choices that havebeen filtered against an ambiguous length filter corresponding to therecognition results from the recognition of that continuously spokenstring of letter names. The correction window has a first choice, 10414,that starts with one of the character sequences associated with theambiguous filter element. The portion of the first choice thatcorresponds to a sequence of characters associated with the ambiguousfilter is indicated by the ambiguous filter indicator 10416. The filtercursor, 10418, is located after the end of this portion of the firstchoice.

At this point, the user presses the Word Right key which, due to theoperation of functions 8124 and 8126 at FIG. 81, causes a filter cursorto be moved to and to select the first character, 10420, of the currentword. Functions 8151 and 8162 of FIG. 81 cause a filtercharacterchoicewindow, 10422, to be displayed. Since the desired character is a “p,”the user presses the “7” key to choose it, which causes that characterto be made an unambiguous character of the filter string, and causes anew correction window, 10424, to be displayed as a result of that changein the filter.

Next, the user presses the character down button four times, which dueto the operation of function 8150 in FIG. 81, causes the filter cursor'sselection to be moved four characters to the right in the first choice,which in the example is the letter “f,” 10426. Since this is a portionof the first choice that still corresponds to the ambiguous portion ofthe filter strength as indicated by the ambiguous filter marker 10428,the call to filtercharacterchoice in line 8152 of FIG. 81 will causeanother character choice window to be displayed, as shown.

In the example, the desired character, the letter “s,” is associatedwith the “5” phone key in the choice list, and the user presses that keyto cause the correct character, 10430, to be inserted into the currentfilter string and it and all the characters before it to beunambiguously confirmed, as indicated by screen 10432.

At this time, the correct choice is shown associated with the phone key“6,” and the user presses that phone key to cause the desired word to beinserted into the editor's text window as shown at 10434.

Next, in the example, the user presses the line down and Word Right keysto move the cursor selection down a line and to the right so as toselect the text “period” shown at 10436. The user then presses the “8,”or word form list key, which causes a word form list shown in screen10438 to be displayed. The desired output, a period mark, is associatedwith the “4” phone key. The user presses that key and causes the desiredoutput to be inserted into the text of the editor window as shown at10440.

FIG. 105 illustrates how the user can use navigation keys to scroll achoice list horizontally right and left by operation of functions 8122through 8135 described above with regard to FIG. 81. This includesscrolling right past the end of the current first choice word, so theuser can read the endings of alternate choices that are longer than thefirst choice.

FIG. 106 illustrates how the KeyAlpha recognition mode can be used toenter alphabetic input into the editor's text window. Screen 10600 showsan editor text window in which the cursor 10602 is shown. In thisexample, the user presses the “1” key to open the entry mode menudescribed above with regard to FIGS. 68, 79 and 80, resulting in thescreen 10604. Once in this mode, the user double-clicks the “3” key toselect the Key Alpha recognition mode option described above with regardto function 7938 of FIG. 79. This causes the system to be set to the KeyAlpha mode described above with regard to FIG. 86, and the editor windowto display the prompt 10606 shown in FIG. 106.

In the example, the user makes an extended press of the “2” key asindicated by the extended downward arrow 10608, which causes a promptwindow, 10610 to display the ICA (International Communication Alphabet)words associated with each of the letters on the “2” key that has beenpressed. In response, the user makes the utterance “Charley,” 10612.This causes the corresponding letter “c” to be entered into the textwindow at the former position of the cursor and causes the text windowto have the appearance shown in screen 10614.

In the example, it is next assumed that the user presses the talk keywhile continuously uttering two ICA words, “alpha” and “bravo” asindicated at 10616. This causes the letters “a” and “b” associated withthese two ICA words to be entered into the text window at the cursor asindicated by screen 10618. Next in the example, the user presses the 8key, is prompted to say one of the three ICA words associated with thatkey, and utters the word “uniform” to cause the letter “u” to beinserted into the editor's text window as shown at 10620.

FIG. 107 provides an illustration of the same KeyAlpha recognition modebeing used to enter alphabetic filtering input. It shows that theKeyAlpha mode can be entered when in the correction window by pressingthe “1” key followed by a double-click on the “3” key in the same way itcan be from the text editor, as shown in FIG. 106.

FIGS. 108 and 109 show how a user can use the interface of the voicerecognition text editor described above to address, enter, and correcttext and e-mails in the cellphone embodiment.

In FIG. 108, screen 10800 shows the e-mail option screen which a useraccesses if he selects the e-mail option by double-clicking on the “4”key when in the main menu, as indicated in FIG. 66.

In the example shown, it is assumed that the user wants to create a newe-mail message and thus selects the “1” option from the e-mail optionsmenu. This causes a new e-mail message window, 10802, to be displayedwith the cursor located at the first editable location in that window.This is the first character in the portion of the e-mail messageassociated with the addressee of the message. In the example, the usermakes an extended press of the talk button and utters the name “DanRoth” as indicated by the numeral 10804. The default vocabulary forrecognition in a contact name field is the contact name vocabulary.

In the example, this causes the slightly incorrect name, “Stan Roth,” tobe inserted into the message's addressee line as a shown at 10806. Theuser responds by pressing the “2” key to select a choice list, shown inscreen 10807, for the selection. In the example, the desired name isshown on the choice list and the user presses the “5” key to select it,causing the desired name to be inserted into the addressee line as shownat 10808.

Next, the user presses the down line button twice to move the cursordown to the start of the subject line, as a shown in screen 10810. Theuser then presses the talk button while saying the utterance “cellphonespeech interface,” 10812. In the example, this is slightlymis-recognized as “sell phone speech interface,” and this text isinserted at the cursor location on the subject line to cause the e-mailedit window to have the appearance shown at 10814. In response, the userpresses the line up button and the Word Left button to position thecursor selection at the position 10816. The user then presses the “8”key to cause a word form list correction window, 10818, to be displayed.In the example, the desired output is associated with the “4” key. Theuser selects that key and causes the desired output to be placed in thecursor's position as indicated in screen 10820.

Next, the user presses the line down button twice to place the cursor atthe beginning of the body portion of the e-mail message as shown inscreen 10822. Once this is done, the user presses the talk button whilecontinuously saying the utterance “the new Elvis interface is workingreally well”. This causes the somewhat mis-recognized string, “he knewelfish interface is working really well”, to be inserted at the cursorposition as indicated by screen 10824.

In response, the user presses the line up key once and the Word Left keytwice to place the cursor in the position shown by screen 10900 of FIG.199. The user then presses the “5” key to start an extended selectionand presses the Word Left key twice to place the cursor at the position10902 and to cause the selection to be extended as is shown by 10904. Atthis point, the user double-clicks on the “2” key to enter thecorrection window, 10906, for the current selection and, during acontinuation of the second press of that double click, continuously saysthe characters “t, h, e, space, n”. This causes a new correction window,10908, to be displayed with unambiguous filter 10910 corresponding to becontinuously entered letter name character sequence, since it is assumedin this example that unambiguous continuous letter name recognition haspreviously been selected as the current filter entry mode.

Next, the user presses the Word Right key, which moves the filter cursorto the first character of the next word to the right, as indicated byscreen 10912. The user then presses the “1” key to enter the entry modemenu and presses the “3” key to select to select the AlphaBravo, or ICAword, input vocabulary. During the continuation of the press of the “3”key, the user says the continuous utterance 10914, i.e., “echo, lima,victor, india, sierra”. This is recognized correctly as the sequence“elvis,” which is inserted, starting with the prior filter cursorposition, into the first choice window of the correction window, 10916.In the example shown, it is assumed that AlphaBravo recognition istreated as unambiguous because of its reliability, causing the enteredcharacters and all the characters before it in the first choice windowto be treated as unambiguously confirmed, as is indicated by theunambiguous filter string indication 10918 shown in screen 10916.

In the example, the user presses the “OK” key to select the currentfirst choice because it is the desired output.

FIG. 110 illustrates how re-utterance can be used to help obtain thedesired recognition output. It starts with the correction window in thesame state as indicated by screen 10906 in FIG. 109. But in the exampleof FIG. 110, the user responds to the screen by pressing the “1” keytwice, once to enter the entry menu mode, and a second time to select alarge vocabulary recognition.

As indicated by function 7908 through 7914 in FIG. 79, if largevocabulary recognition is selected in the entry mode menu when acorrection window is displayed, the system interprets this as anindication that the user wants to perform a re-utterance, that is, toadd a new utterance for the desired output into the utterance list foruse in helping to select the desired output.

In the example, the user continues the second press of the “1” key whileusing discrete speech to say the three words “the,” “new,” “Elvis”corresponding to the desired output. In the example of FIG. 110, it isassumed the additional acoustic information provided by this newutterance list entry causes the system to correctly recognize the firsttwo of the three words. It does so by performing a re-utterancerecognition that uses a combination of acoustic scores from matchesagainst both the original and the new utterance list entries thatcorrespond to the selection for which the correction window is beingdisplayed. In the example it is assumed that the third of the threewords is not in the current vocabulary, which will require the user tospell that third word with filtering input, such as was done by theutterance 10914 in FIG. 109.

FIG. 111 illustrates how the editor's functionality can be used to entera URL text string for purposes of accessing a desired web page on a Webbrowser that is part of the cellphone's software.

The browser option screen, 11100, shows the screen that is displayed ifthe user selects the Web browser option associated with the “7” key inthe main menu, shown in FIG. 66. In the example, it is assumed that theuser desires to enter the URL of a desired web site and selects the URLwindow option associated with the “1” key by pressing that key. Thiscauses the screen 11102 to display a brief prompt instructing the user.The user responds by using continuous letter-name spelling to spell thename of a desired web site during a continuous press of the “Talk”button.

In the embodiment shown, the URL editor is always in correction mode sothat the recognition of the utterance, 11103, causes a correctionwindow, 11104, to be displayed. The user then uses filter string editingtechniques of the type described above to correct the originallymis-recognized URL to the desired spelling as indicated at screen 11106,at which time he selects the first choice, causing the system to accessthe desired web site.

FIGS. 112 through 114 illustrate how the editor interface can be used tonavigate, and enter text into the fields of, Web pages.

Screen 11200 illustrates the appearance of the cellphone's Web browserwhen it first accesses a new web site. A URL field, 11201, is shownbefore the top of the web page, 11204, to help the user identify thecurrent web page. This position can be scrolled back to at any time ifthe user wants to see the URL of the currently displayed web page. Whenweb pages are first entered, they are in a document/page navigationalmode in which moving the Left and Right key will act like the Page Backand Page Forward controls on most Web browsers. In this case, the word“document” is substituted for “page” because the word “page” is used inother navigational modes to refer to a screen full of media on thecellphone display. If the user presses the up or down keys, the webpage's display will be scrolled by a full display page (or screen).

In the example of FIG. 112, the user presses the Page Down screen, whichscrolls down one screen in the display of the current web page, causinga new screen, 11208, to be shown. The user then selects the “3” keyfollowed by the “3” key again, which selects the Navigation Menu and theItem/Line mode which is a web page's equivalents of the Word/Line modeassociated with the 3 key in the editor's Navigation menu. In thisNavigation mode, if the user presses the Left or Right navigationalkeys, the cursor will move to the next selectable object within the webpage to the left or right on the current line, or, if there is not anysuch item on the current line, to the next such item going to the leftand upward or going to the right and downward in the web page,respectively.

In the example, this navigation mode is used to place the cursor in thetext field, 11210, shown in FIG. 112. The user then presses a text inputkey, such as the “Talk” key, which causes a field editor window, 11212,to be displayed. The user then says the utterance 11214 during the pressof the Talk key, which causes the text recognized for that utterance tobe inserted into the field editor window as indicated at 11216. The userthen continues to use correction techniques of the types described aboveuntil the field edit window has the desired text, as indicated in screen11300 of FIG. 113. The user then presses the OK button to cause the textin the field edit window to be inserted into the field of the web pagefor which the field edit window had been evoked, as indicated at 11302.

In the example, it is assumed that the current web page is a searchengine and that the text which has just been entered is a search string.The user follows the entry of this text by pressing the Item Rightbutton to place the cursor on a “go” button, 11304, to the right of thefield into which text had just been entered. The user then presses theOK button to cause the search engine to make the desired search, whichresults in a new browser screen 11306 showing a search results web page.

FIG. 114 illustrates that the field editor window can enable a user toeasily read text contained within a web page's or a dialog box's textfield that is larger than the space allocated for the text field on theweb page or dialog box. Thus, a user can navigate the cursor to a textfield, such as the text field 11400 previously shown in the screen 11302of FIG. 113, press a text input button and cause a field edit window tobe displayed that provides room for a substantial amount of field textto be displayed and easily read at one time. When the user is finishedreading the text, he can merely click the OK or escape key to return tothe screen in which the field was previously shown.

FIG. 115 shows how the editor interface can be used to edit text in adialog box, in this example, the Find Dialog Box evoked by the “Find”option, 9034 in the Edits Option Menu shown in FIG. 90. In the exampleof FIG. 115, the user presses the “0” key to enter the edit options menuand then the “8” key to select the find option. This results in the finddialog box, 11500, being displayed, with the cursor located at the firsteditable object in the dialog box, which in this case is the “Find” textfield. In response, the user speaks the utterance 11502 while the Talkkey is pressed.

In the example, this “Find” string is correctly recognized and insertedin the dialog box as indicated at 11504. The user responds by pressingthe OK key, which causes the find function to search for the searchstring in the current document, which in the example is the notesdocument. When it finds the first occurrence of the string, it providesa notes editor window with that occurrence selected, as is shown inscreen 11506.

In the example, the text string searched for has been used as a labelfor recorded audio represented by audio graphics 11508 shown in FIG.115. In the screen 11506 the audio graphics represent one second ofsound for each pixel width, and approximately 60 pixel widths fit on afull line of the sound segment 11508, allowing approximately one minuteof sound to be represented on each line. The audio graphics present, ineffect, a bar chart representing the amplitude of sound during eachsecond of the recorded speech. This provides useful information in thatit enables the user to see periods of silence. The Audio Navigation menu8940 described above with regard to FIG. 89 provides one method ofdetermining the resolution at which such audio graphics are displayed ona given system.

FIG. 116 illustrates how the cellphone embodiment shown allows a specialform of correction window to be used as a list box when editing a dialogbox of the type described above with regard to FIG. 115.

The example of FIG. 116 starts from the find dialog box being in thestate shown at screen 11504 in FIG. 115. From this state, the userpresses the down line key twice to place the cursor in the “In:” listbox, which defines in which portions of the cellphone's data the searchconducted in response to the find dialog box is to take place. When theuser presses the “Talk” button with the cursor in this window, a listbox correction window, 11612, is displayed that shows the currentselection in the list box as the current first choice and provides ascrollable list of the other list box choices, with each such otherchoice being shown with associated phone key number. The user couldscroll through this list and choose the desired choice by phone keynumber or by using a highlighted selection. In the example, the usercontinues the press of the talk key and says the desired list box valuewith the utterance, 11614. In list box correction windows, the activevocabulary is substantially limited to list values. With such a limitedvocabulary correct recognition is fairly likely, as is indicated in theexample where the desired list value is the first choice. The userresponds by pressing the OK key, which causes the desired list value tobe placed in the list box of the dialog box as is indicated, 11618.

FIG. 117 illustrates a series of interactions between a user and thecellphone interface, which display some of the functions the interfaceallows the user to perform when making phone calls.

The screen 6400 in FIG. 117 is the same top-level phone mode screendescribed above with regard to FIG. 64. If, when it is displayed, theuser selects the Right navigation button, which is mapped to be namedial command, the system will enter the name dial mode, the basicfunctions of which are illustrated in the pseudocode of FIG. 129. As canbe seen from that figure, this mode allows a user to select names from acontact list by speaking or spelling them, and if there is amis-recognition, to correct it by alphabetic filtering and/or byselecting choices from a potentially scrollable choice list in acorrection window that is similar to those described above.

When the cellphone enters the name dial mode, an initial prompt screen,11700, is shown as indicated in FIG. 117. In the example, the userutters a name, 11702, during the pressing of the talk key. In name dial,such utterances are recognized with the vocabulary automaticallysubstantially limited to the name vocabulary. The resulting recognitioncauses a correction window, 11704, to be displayed. In the example, thefirst choice is correct, so the user selects the “OK” key, causing thephone to initiate a call to the phone number associated with the namedparty in the user's contact list.

When the phone call is connected, a screen, 11706, is displayed havingthe same ongoing call indicator, 7514, described above with regard toFIG. 75. At the bottom of the screen, as indicated by the numeral 11708,an indication is given of the functions associated with each of thenavigation keys during the ongoing call. In the example, the userselects the down button, which is associated with the Notes Outlineoption 6616 described above with regard to FIG. 66. In response, aneditor window, 11710, is displayed for the Notes outline with anautomatically created heading item, 11712, being created in the Notesoutline for the current call, labeling the party to whom it is made andits start and ultimately its end time. A cursor, 11714, is then placedat a new item indented under the calls heading.

In the example, the user says a continuous utterance, 11714, during thepressing of the talk button. This causes recognized text correspondingto that utterance to be inserted into the notes outline at the cursor asindicated in screen 11716. Then the user double-clicks the “6” key tostart recording, which causes an audiographic representation of thesound to be placed in the editor window at the current location of thecursor. As indicated at 11718, audio from portions of the phone call inwhich the cellphone operator is speaking is underlined in theaudiographics to make it easier for the user to keep track of who's beentalking how long in the call and, if desired, to be able to bettersearch for portions of the recorded audio in which one or the other ofthe phone call's two parties was speaking.

In the example of FIG. 117, the user next double-clicks on the star keyto select the task list. This shows a screen, 11720, that lists thecurrently opened tasks, on the cellphone. In the example, the userselects the task associated with the “4” key, which is another noteseditor window displaying a different location in the notes outline. Inresponse, the phone keys display shows a screen, 11722, of that portionof the notes outlined.

In the example, the user presses the up key three times to move thecursor to location 11724 and then presses the “6” key to start playingthe sound associated with the audio graphics representation at thecursor, as indicated by the motion between the cursors of screens 11726and 11728.

Unless the Play-Only-To-Me option, 7513, shown above with regard to FIG.75, is on, the playback of the audio in screen 11728 will be played toboth sides of the current phone call, enabling the user of the cellphoneto share audio recording with the other party during the cellphone call.

FIG. 118 illustrates that when an edit window is recording audio, suchas is shown in screen 11717 near the bottom middle of FIG. 117, the usercan turn on speech recognition during the recording of all or a portionof such audio to cause the audio recorded during that portion to alsohave speech recognition performed upon it. In the example shown duringthe recording shown in screen 11717, the user presses the talk buttonand speaks the utterance 11800. This causes the text associated withthat utterance, 11802, to be inserted in the editor window, 11806. Audiorecorded after the duration of the recognition is recorded merely withaudio graphics. Normally the user would make an effort to speak clearlyduring an utterance, such as the utterance 11800, which is to berecognized, and then would feel free to talk more casually duringportions of conversation or dictation that are being recorded only withaudio. Normally audio is recorded in association with speech recognitionso that the user could later go back, listened to and correct anydictation that might have been incorrectly recognized during arecording.

FIG. 119 illustrates how the system enables the user to select a portionof audio, such as the portion 11900 shown in that figure by acombination of the extended selection key and play or navigation keys,and then to select the recognized audio dialog box discussed above withregard to functions 9000 through 9014 of FIG. 90 to have the selectedtext recognized as indicated in screen 11902. In the example of FIG.119, the user has previously selected the Show-Recognized-Audio option,9026, shown in FIG. 90, which causes the recognized text, 11902, to beunderlined, indicating that it has a playable audio associated with it.In FIG. 119 the screen 11902 is shown having an exaggerated height thatis roughly equal the height of six actual screens, for the purpose ofshowing all the text that is associated with a relatively short selectedsegment 1190 of audio.

FIG. 120 illustrates how a user can select a portion, 12000, ofrecognized text that has associated recorded audio, and then select tohave that text stripped from its associated recognized audio byselecting the option 9024, shown in FIG. 90, in a submenu under the editoptions menu. This leaves just the audio, 12002, and its correspondingaudio graphic representation, remaining in the portion of media wherethe recognized text previously stood.

FIG. 121 illustrates how the function 9020, of FIG. 90, from under theaudio menu of the edit options menu allows the user to strip therecognition audio that has been associated with a portion, 12100, ofrecognized text from that text as indicated at 12102 in FIG. 121. Notethat the audio 12104, which has no recognized text associated with it,is not deleted, since such audio is not considered recognition audio.

FIGS. 122 through 125 illustrate operation of the digit dial modedescribed in the pseudocode of FIG. 130. If the user selects the digitdial mode, such as by pressing the “2” phone key when in the main menu,associated with function 6552 of FIG. 65 or by selecting the Leftnavigational button when the system is in the top-level phone mode shownin screen 6400 and FIG. 64, the system will enter the digital dial modeshown in FIG. 130 and will display a prompt screen, 12202, which promptsthe user to say a phone number. When the user says an utterance of aphone number, as indicated at 12204, that utterance will be recognized.If the system is quite confident that the recognition of the phonenumber is correct, it will automatically dial the recognized phonenumber as indicated at 12206. If the system is not that confident of thephone number's recognition, it will display a correction window, 12208.If the correction window has the desired number as the first choice asis indicated in screen 12210, the user can merely select it by pressingthe OK key, which causes the system to dial the number as indicated at12212. If the correct choice is on the first choice list as is indicatedin screen 12214, the user can merely press the phone key numberassociated with that choice to cause the system to dial the number, asis indicated at 12216.

If the correct number is neither the first choice nor in the firstchoice list as indicated in the screen 12300, shown at the top of FIG.123, the user can check to see if the desired number is on one of thescreens of the second choice list by either repeatedly pressing the pagedown key as indicated by the number 12302, or repeatedly pressing theitem down key as is indicated at 12304. Pushing the “Page Down” buttonmoves a screen at a time through the second choice list. Pushing “ItemDown” moves the highlighted item down one item at a time. If byscrolling through the choice list in either of these methods the usersees the desired number, the user can select it either by pressing itsassociated phone key or by moving the choice highlight to it and thenpressing the OK key. This will cause the system to dial the number asindicated at screen 12308.

It should be appreciated that because the phone numbers in the choicelist are numerically ordered, the user is able to find the desirednumber rapidly by scrolling through the list. In the embodiment shown inthese figures, digit change indicators, 12310, are provided to indicatethe digit column of the most significant digit by which any choicediffers from the choice ahead of it on the list. This makes it easierfor the eye to scan for the desired phone number.

FIG. 124 illustrates how the use of the Filter Nav option, describedabove with regard to functions 8248 and 8240 of the Correction Windowfunctions shown in FIG. 82 in digit dial mode allows the user tonavigate to digit positions in the first choice by use of the navigationkeys and correct any error that exists within it. In FIG. 124, this isshown being done by speaking the desired number, but some embodimentsthe user is also allowed a filter option that can correct the desirednumber by navigating to digits in a number that need to be corrected andpressing the appropriately numbered phone keys.

As illustrated in FIG. 125, the user is also able to edit a misperceivedphone number by inserting a missing digit as well as by replacing amis-recognized one. The user can switch from a selection cursor thatwill cause an uttered number to replace the number highlighted by thecursor to an insertion cursor which is located between digits bypressing a “Character Up” key immediately followed by pressing a“Character Down” key as indicated by numeral 12502, or vice versa, bypressing a “Character Down” key immediately after pressing a “CharacterUp” key.

FIG. 129 illustrates one possible embodiment of the Name Dial routine12900. This function can be selected from the top level phone screen6400 shown at the start of FIG. 117 by pressing the Right button. Itallows selection of a phone number by recognition of an associated namein the cellphone's contact information, in a manner similar to that inwhich an email address is selected by saying an associated name, as isshown in the screens 10800 through 10808 of FIG. 108.

As shown in FIG. 129, function 12904 of the Name Dial routine promptsthe user to say or spell a name from the contact list. This isillustrated at screen 11700 in FIG. 117. This prompt remains displayeduntil it is removed either by the detection of an utterance in namerecognition mode or of alphabetic input in filter mode, or by the userexiting the name dial function, such as by pressing the “escape” key,“*” (which, for purposes of simplification, is not shown in FIG. 129).

Function 12904 also clears the filter string, since at the time of therecognition of the expected name utterance no filter input will havebeen received, and sets the name dial routine to name recognition mode,which will cause the next utterance to be responded to by functions12908 through 12916.

After function 12904 is performed a loop 12906 iterates over theremaining functions of FIG. 129. This loop is repeated until either aname is selected for dialing or the name dial function is exited.

If during this loop, before any step has been taken to remove the namedial routine from the name recognition mode, an utterance is detected,function 12908 causes functions 12909 through 12916 to be performed.

Function 12909 removes the prompt of function 12904. Function 12910calls the getchoices routine of FIG. 23 with the utterance and thecurrent filter string which is empty at this time. GetChoices willperform recognition on the utterance with a vocabulary substantiallylimited to names from system's contact list.

Function 12912 sets the navigation in the name dial mode to thePage/Item navigation mode and sets the name dial function to the choicemode, which favors the recognition of commands for selecting choicesfrom the choice list.

In a manner similar to that described above with regard to thedisplayChoiceList routine of FIG. 22, function 12914 creates a firstalphabetically ordered choice list that fits on one screen and a secondalphabetically ordered choice list of more poorly scoring words from therecognition results created by the call to getchoices. The second listcan be multiple screens in length.

Function 12916 then displays the best choice plus the first orderedchoice list with the current filter cursor on the first letter of thefirst choice.

If the recognition of functions 12908 through 12916 is triggered by anunintended utterance, the user can, often by merely pressing “*>”,escape from the name dial choice list window and then re-enter the namedial function, if desired.

Once in the loop 12906, if the user selects Filter Mode bydouble-pressing the “2” key, function 12917 sets the navigation mode tothe Word/Char mode and enters the Filter Mode In this mode recognitionof utterances and key presses related to filtering are favored.

After the user has switched to filter mode, he or she can enteralphabetic filtering input, such as by uttering a letter-name or byeither ambiguous or unambiguous phone key presses, depending on currentsettings. If the user enters such alphabetic filtering input while infilter mode, function 12918 causes functions 12919 through 12930 to beperformed.

Function 12919 removes the prompt of function 12904. Function 12920calls the filterEdit routine of FIG. 28 with filtering input, and thecurrent first choice, filter string, and filter cursor. Then function12922 calls get-Choices with the filter string produced by the call tofilterEdit to create a set of best scoring names based on the currentfilter string and recognition against the prior utterance of the desiredname, if any.

Functions 12926 and 12928 show that if there is no prior name utterance,an alphabetically ordered choice list of contact names which haveinitial letters corresponding to the current filter string will becreated. (Actually these choices will be generated by the call togetChoices in function 12922, which, as is shown in FIG. 23 includesfunctions 2338 and 2340 that can create choices from a filter stringeven when there is no utterance.)

Function 12930 displays a list of choices from the call to getchoices,with the highest scoring word in the list as the best, or first, choiceand with the filter cursor before the first letter of the first choicethat does not correspond to the filter string.

In some embodiments an indication will be made to the user that thephone keys cannot be used to choose any displayed choices other than thefirst choice when name dial is in the filter mode, during which timesuch keys are used for entering filtering characters. This can be done,for example by removing the phone key numbers from next to the non-bestchoices or, if one has a display capable of it, by graying all thechoices other than the first choice.

Once a choice list is displayed, function 12932 allows functions 12934through 12960 of the loop 12906 to be performed.

If, during the display of a choice list, the user selects a displayedchoice candidate, function 12934 causes function 12936 to dial the phonenumber associated with the chosen name.

If the desired name is the current first choice, this can be done bypressing the “OK” key, as shown at 11705 in FIG. 117, in either thefilter or choice mode. Choice mode provides more options for selectingchoices. It favors recognition of choice-related commands. In choicemode, if the desired name is a displayed alternate choice, it can beselected by pressing the phone key having the number next to thatchoice. The Page/Item navigation mode used in choice mode, allows a userto scroll the highlighted choice in the choice list from the firstchoice to another choice and then either press “OK” to select thecurrent highlighted choice or press a phone key associated with adesired choice.

If the user selects the Choice Mode by single pressing the “2” key,function, 12938 sets the navigation mode to the Page/Item mode andenters the Choice Mode.

During the Page/Item navigation mode of the Choice Mode, function 12940causes functions 12942 through 12948 to control a response to thepressing of a navigational button.

In the Page/Item mode if the user selects Page Left or Right by pressingthe Left or Right navigation button, functions 12942 and 12944 respondby scrolling the choice lists by a page up or down, respectively, movingthe selection highlight by one page.

If, on the other hand, the user selects Item. Up or Down by pressing theUp or Down button when in Page/Item navigation mode, functions 12946 and12948 scroll the highlighted choice up or down, respectively, by onechoice, scrolling the screen if necessary to display the new highlightedchoice.

During the Word/Char navigation mode of the Filter Mode, function 12950causes functions 12952 through 12960 to control the response to anavigational button.

If a user selects Word Left or Right while in Word/Char mode, functions12952 and 12954 move the current character selection to the first orlast character, respectively, of the previous or next word (such asfirst, middle, or last name) in the displayed best choice.

On the other hand if the user selects Character Up or Down when in sucha mode, functions 12956 through 12960 move the filter cursor left orright by one character, respectively, provided the move would not placethe filter cursor before or after the start or end of the best choice.

As shown in FIG. 129, the Name Dial routine allows a user to not onlydial calls to a person listed in the cellphone's contact information bysaying their name, but it also allows the user to aid such a recognitionprocess by quickly scanning through one or more alphabetically orderedchoice lists to look for a desired name listed as an alternate choicewhen the correct choice is not listed first. It also allows a user tolimit recognition candidates to those that match a user specified filterstring.

In some embodiments, all or a subset of the correction window optionsspecified in FIGS. 81 through 83 could be made available in the NameDial routine.

FIG. 130 illustrates a Digit Dial routine 13000, aspects of which havebeen described above with regard to FIGS. 122 through 125.

Function 13002 of this routine prompts a user to say the digits of aphone number that is to be dialed, as shown in screen 12202 of FIG. 122.Once such an utterance is received, such as the utterance 12204 shown inFIG. 122, function 13004 of FIG. 130 performs continuous digitrecognition on it. A call to a routine like getchoices routine of FIG.23 can be used to perform this recognition and generate a list of bestscoring number strings.

If the cellphone is in a mode in which confirmation is not requiredbefore the dialing of a phone number selected by voice recognition, andif the confidence in the first choice recognized number string is abovea required level, functions 13006 and 13008 will dial the recognizednumber, as is indicated at screen 12206 of FIG. 122. This causes thecellphone to commence a phone call and exit the routine of FIG. 130. Insome embodiment the user can be enabled to decide whether the cell phoneis to be in a mode in which the voice recognition of all phone numbersrequires confirmation, no matter what the recognition confidence, by useof options located under the Main Options Menu referred to briefly at6648 at the end of FIG. 68.

If best choice has a score above a required minimum level sufficient toindicate the recognition has a chance of proving useful, function 13010causes functions 13012 through 13016 to generate a correction window.Although not shown, it is preferred that if this minimum score is notmet the program flow will return to step 13002, which prompts the userto re-say the phone number.

If the minimum recognition score is met, function 13012 sets thenavigation mode to Page/Item. Function 13014 creates a set of choicelists from the recognition results produced by function 13006 in amanner similar to that described above with regard to thedisplayChoiceList routine of FIG. 22. This includes generating a firstnumerically ordered choice list, which will fit on one screen, and asecond numerically ordered choice list, which can be multiple screens inlength. Then function 13016 displays best choice plus the first orderedchoice list with current selection being set to the last digit in bestchoice. This results in the screen having the appearance shown at 12210in FIG. 122.

Once this Digit Dial choice list is displayed, a loop 13018 isperformed. Which repeatedly responds to user inputs, as indicated by thefunctions 13020 through 13070, until a phone number is selected anddialed or the user otherwise exits the Digit Dial routine.

If, when in the loop 13018, a user selects a displayed choice candidate,functions 13020 and 13022 will dial the selected number and then exitthe Digit Dial routine. Such a selection can be made by pressing the“OK” key to select the first choice, as indicated at 12211 in FIG. 122,or by pressing a number key associated with a currently displayedchoice, as is indicated at 12215 in FIG. 122.

If, when in this loop, the user selects Filter Mode by double pressingthe “2” key, function 13024 sets the navigation mode to Word/Char Modeand enters Filter Mode.

If, on the other hand, the user selects choice mode by single pressingthe “2” key, function 13026 sets the navigation mode to Page/Item andenters Choice Mode.

If, when in the Page/Item navigational mode of the Choice Mode, the userenters Page Left or Right, functions 13030 and 13032 will scroll thechoice list by a page up or down, respectively, moving the highlight byone page, as is indicated on the left hand side of FIG. 123. This willallow the user to quickly scan all the choices in the two numericallyordered lists generated by either function 13014 or 130 13068.

If instead, when in this mode, the user selects Item Up or Down,functions 13034 and 13036 scroll the highlighted choice up or down,respectively, by one choice, scrolling the screen if necessary todisplay the highlighted choice. This choice-at-a-time navigation isindicated on the right hand side of FIG. 123. If either method ofnavigation places the desired number on the screen, the user can thenselect it by either pressing the “OK” key (if the highlight is on it) orby pressing an associated choice number key, as described above withregard to functions 13020 and 13022.

If, when in the Word/Char navigation mode of the Filter Mode, the userselects Word Left or Right, functions 13040 and 13042 move the currentcharacter selection to the first or last digit, respectively ofdisplayed best choice.

If instead, when in this mode the user selects Character Up or Down,functions 13046 through 13052 will be performed. Function 13046 tests tosee if either (a) the last input was a Character Up or Down command ofdifferent direction or (b) the move would put character selection beforeor after end of the current best choice. If either of these conditionsis met, function 13048 changes the current character selection to aninsertion cursor immediately before or after, respectively, the priorcharacter selection. If neither of the conditions of function 13046 ismet, functions 13050 and 13052 move the current character selection leftor right by one digit.

If the user inputs one or more digits, function 13054 causes functions13056 through 13070 to be performed.

If the current character selection is one or more digits, functions13056 and 13058 replace the selected digit or digits with the one ormore digits that have just been input by the user.

If, on the other hand, the current character selection is an insertioncursor of the type created by the operation of functions 13046 and13048, then functions 13060 and 13062 will insert the one or more newlyentered digits at the cursor position.

Once the new digits have been inserted into the best choice, function13066 filters the phone number choices, using all digits from the startof the first choice up to and including the rightmost newly inserteddigit as the filter string. Such filtering can be performed in a mannersimilar to that described above with regard to FIGS. 23 and 26.

Once such recognition has been performed functions 13068 and 13070create a set of choice lists and display them in a manner similar tothat described above with regard to function s13014 and 13016.

Thus, it can be seen that the Digit Dial routine of FIG. 130 allows auser to dial calls to a phone number by saying that number's digits. Italso allows the user to aid such a recognition process by quicklyscanning through one or more numerically ordered choice lists to lookfor a desired phone number as an alternate choice when the correctchoice is not listed first. It also allows a user to limit phone numbercandidates to those that match a user specified numerical filter string.

In some embodiments, many of the correction window options specified inFIGS. 81 through 83 could be made available in the Digit Dial routine.

The invention described above has many aspects that can be used for theentering and correcting of speech recognition as well as other forms ofrecognition on many different types of computing platforms, includingall those shown in FIGS. 3 through 8. A lot of the features of theinvention described with regard to FIG. 94 can be used in situationswhere a user desires to enter and/or edit text without having to payclose visual attention to those tasks. For example, this could allow auser to listen to e-mail and dictate responses while walking in a Park,without the need to look closely at his cellphone or other dictationdevice. One particular environment in which such audio feedback isuseful for speech recognition and other control functions, such as phonedialing and phone control, is in an automotive arena, such as isillustrated in FIG. 126.

In the embodiment by shown in FIG. 126, the car has a computer, 12600,which is connected to a cellular wireless communication system, 12602,and to the car's audio system 12604. In many embodiments, the car'selectronic system will have a short range wireless transceiver such as aBlue Tooth or other short range transceiver, 12606. These can be used tocommunicate to a wireless headphone, 2608, or the user's cellphone,12610, so that the user can have the advantage of accessing informationstored on his normal cellphone while using his car.

Preferably, the cellphone/wireless transceiver, 12602, can be used notonly to send and receive cellphone calls but also to send and receivee-mail, digital files, such as text files that can be listened to andedited with the functionality described above, and audio Web pages.

The input device for controlling many of the functions described abovewith regard to the shown cellphone embodiment can be accessed by a phonekeypad, 12612, which is preferably located in a position such as on thesteering wheel of the automobile, which will enable a user to access itskeys without unduly distracting him from the driving function. In fact,with a keypad having a location similar to that shown in FIG. 126, auser can have the forefingers of one hand around the rim of the steeringwheel while selecting keypad buttons with the thumb of the same hand. Insuch an embodiment, preferably the system would have the TTS keysfunction described above with regard to 9404 through 9414 of FIG. 94 toenable the user to determine which key he is pressing and the functionof that key without having to look at the keypad. In other embodiments,the touch sensitive keypad, discussed above with regard to FIG. 94, thatresponds to a mere touching of its phone keys with such informationcould also be provided that would be even easier and more rapid to use.

FIGS. 127 and 128 illustrate that most of the capabilities describedabove with regard to the cellphone embodiment can be used on other typesof phones, such as on the cordless phone shown in FIG. 127 or on thelandline found indicated at FIG. 128.

It should be understood that the foregoing description and drawings aregiven merely to explain and illustrate, and that the invention is notlimited thereto except insofar as the interpretation of the appendedclaims are so limited. Those skilled in the art who have the disclosurebefore them will be able to make modifications and variations thereinwithout departing from the scope of the invention.

The invention of the present application, as broadly claimed, is notlimited to use with any one type of operating system, computer hardware,or computer network and, thus, other embodiments of the invention coulduse differing software and hardware systems.

Furthermore, it should be understood that the program functionsdescribed in the claims below, like virtually all program functions, canbe performed by many different programming and data structures, usingsubstantially different organization and sequencing. This is becauseprogramming is an extremely flexible art in which a given idea of anycomplexity, once understood by those skilled in the art, can bemanifested in a virtually unlimited number of ways. Thus, the claims arenot meant to be limited to the exact functions and/or sequence offunctions described in the figures. This is particularly true since thepseudo-code described in the text above has been highly simplified tolet it more efficiently communicate that which one skilled in the artneeds to know to implement the invention without burdening him or herwith unnecessary details. In the interest of such simplification, thestructure of the pseudo-code described above often differs significantlyfrom the structure of the actual code that a skilled programmer woulduse when implementing the invention. Furthermore, many of the programmedbehaviors that are shown being performed in software in thespecification could be performed in hardware in other embodiments.

In the many embodiment of the invention discussed above, various aspectsof the invention are shown occurring together which could occurseparately in other embodiments of those aspects of the invention.

It should be appreciated that the present invention extends to methods,apparatus systems, and programming recorded in machine-readable form,for all the features and aspects of the invention which have beendescribed in this application is filed including its specification, itsdrawings, and its original claims.

1. A computerized method of performing speech recognition comprising:using speech recognition programming for: providing a user interfacewhich allows a user to select between generating a first and a seconduser input; responding to the generation of the first user input byperforming large vocabulary speech recognition on one or more utterancesin a prior-language-context-dependent mode, which recognizes at leastthe first word of an utterance depending in part on a language modelcontext created by a previously recognized word from the previousutterance, if any; and responding to the generation of the second userinput by performing large vocabulary speech recognition on one or moreutterances in a prior-language-context-independent mode, whichrecognizes at least the first word of an utterance substantiallyindependently of any language model context created by a previouslyrecognized word from the previous utterance, if any; wherein: as wordsare recognized by said speech recognition programming in both of saidrecognition modes such words are output to programming external to saidspeech recognition programming for use by said external programming; andthe response by said speech recognition programming to said first andsecond inputs by switching recognition modes is independent of the stateof said external programming.
 2. A method as in claim 1 wherein: theuser interface includes a first button and a second button, where saidbuttons can be either hardware or software buttons; the first user inputis generated by pressing the first button; and the second user input isgenerated by pressing the second button.
 3. A method as in claim 1wherein the prior-language-context-independent mode uses languagecontext probabilities within an utterance, causing the recognition of aword in a given utterance to depend on the identity of the one or morewords, if any, recognized before it in said given utterance.
 4. A methodas in claim 1 wherein said method is performed by a software input panelin Microsoft Windows CE
 5. A computerized method of performing speechrecognition comprising: providing a user interface which allows a userto select between generating a first and a second user input; respondingto the generation of the first user input by selecting a continuousspeech recognition mode which performs continuous speech recognition onspeech sounds using a given vocabulary; responding to the generation ofthe second user input by selecting a discrete recognition mode whichperforms discrete recognition on speech sounds using substantially thesame given vocabulary; and responding to speech sounds by performingrecognition upon them using the currently selected speech recognitionmode; wherein the user can switch between the use of continuous anddiscrete recognition by selecting one of said user inputs.
 6. A methodas in claim 5 wherein the given vocabulary is a large vocabulary.
 7. Amethod as in claim 5 wherein the given vocabulary is an alphabetic inputvocabulary.
 8. A method as in claim 5 wherein: said user interfaceallows a user to select between generating a third and a fourth inputindependently from the selection of the first and second input; and saidmethod further includes responding to said third and fourth inputs,respectively, by selecting as said given vocabulary a first vocabularyor a second vocabulary; whereby the user can separately switch betweenrecognition vocabularies and between THE discrete and continuousrecognition modes.
 9. A method as in claim 8 wherein said first andsecond vocabulary are a large vocabulary of words and an alphabeticinput vocabulary, respectively.
 10. A method as in claim 8 wherein saidfirst and second vocabulary are two different alphabetic inputvocabularies.
 11. A method as in claim 5 wherein: the user interfaceprovided includes a first button and a second button; the first userinput is generated by pressing the first button; and the second userinput is generated by pressing the second button.
 12. A method as inclaim 11 wherein: touching the first and second buttons causes theirrespective recognition mode to recognize from substantially the start ofthe touching of such a button until the next end of utterance isdetected; the discrete recognition is limited to the recognition of theone or more single vocabulary word recognition candidates with the bestscoring match against the given utterance whose end is detected afterthe touching of said button; and the continuous recognition mode is notlimited; so that said discrete recognition mode is limited to outputtingonly one single vocabulary word as the best scoring recognitioncandidate for the recognition of the given utterance and the continuousrecognition mode can output a sequence of multiple words for therecognition of the given utterance.
 13. A method as in claim 5 whereinacoustic models used to represent words in the discrete recognition modeare different than the acoustic models used to represent the same wordsin the continuous recognition mode.
 14. A computerized method ofperforming speech recognition comprising: providing a user interfacewhich allows a user to select between generating a first and a seconduser input; responding to the generation of the first user input byselecting a continuous speech recognition mode which performs largevocabulary continuous speech recognition on speech sounds; responding tothe generation of the second user input by selecting a discreterecognition mode which performs large vocabulary discrete recognition onspeech sounds; and responding to speech sounds by performing largevocabulary recognition upon them using the currently selected speechrecognition mode; wherein the user can switch between the use ofcontinuous and discrete large vocabulary recognition by selecting one ofsaid user inputs.
 15. A computerized method of performing speechrecognition comprising: providing a user interface which allows a userto select between generating a first and a second user input; respondingto the generation of the first user input by switching to a firstrecognition mode that recognizes one or more utterances as one or morewords in a first alphabetic entry vocabulary; and responding to thegeneration of the second user input by switching to a second recognitionmode that recognizes one or more utterances as one or more words in asecond, different, alphabetic entry vocabulary; wherein the first andsecond alphabetic entry vocabularies associated differentletter-identifying words with individual letters of the alphabet.
 16. Amethod as in claim 15 wherein: the first alphabetic entry vocabularyincludes the names of each letter of the alphabet and the secondalphabetic entry vocabulary does not; and the second alphabetic entryvocabulary includes one or more words that start with each letter of thealphabet and the first alphabetic entry vocabulary does not.
 17. Amethod as in claim 15 wherein said user interface provides a separatebutton for generating said first and second inputs.
 18. A method as inclaim 17 wherein touching of each of said buttons turns on recognitionin the button's associated alphabetic entry mode.
 19. A method as inclaim 15 wherein said user interface enables: a user to select afiltering mode in which word choices for the recognition of a given wordare limited to word's whose spelling matches a sequence of one or morecharacters input by the user; a user to enter said one or more filteringcharacters by voice recognition using either said first or secondalphabetic entry modes; and said first and second inputs select betweenwhether such recognition of filtering characters is performed using saidfirst or second alphabetic entry modes, respectively.
 20. A computerizedmethod of performing speech recognition comprising: providing a userinterface which allows a user to select between generating a first, asecond, a third, or a fourth user input; responding to the generation ofthe first user input by switching to performing speech recognition usinga first, general purpose large vocabulary; and responding to thegeneration of the second user input by switching to performing speechrecognition using a second, alphabetic entry vocabulary; responding tothe generation of the third user input by switching to performing speechrecognition using a third, numerical entry vocabulary; responding to thegeneration of the fourth user input by switching to performing speechrecognition using a fourth, punctuation entry, vocabulary; andsequentially receiving output in the form of words produced by speechrecognizing using different user selected ones of said four vocabulariesand placing that output into a common text.
 21. A method as in claim 20wherein the output of speech recognition using the third vocabulary isin the form of numerical digits.
 22. A method as in claim 20 wherein theoutput of speech recognition using the fourth vocabulary is in the formof punctuation marks.
 23. A method as in claim 20 wherein the userinterface provides a different button for the selection of each of thefirst, second, third and fourth inputs.
 24. A method as in claim 23wherein pressing the button associated with one of said fourvocabularies turns on recognition using that vocabulary.